33422


RMarkdownでPDFファイルを作成しています。`ggplot2`で日本語を表示させたいのですが、RStudio上では表示できる図が、PDFに変換した場合にはエラーとなります。

[code]

    data %>% select_("Q1.4", "Group") %>%
        ggplot(aes(factor(Q1.4), fill=factor(Group))) + geom_bar() +
        coord_flip() + theme_gray(base_family="YuGo-Medium") +
        scale_fill_hue(name = "Group") + labs(x="Choice") +
        scale_x_discrete(limits=c("NA",5,4,3,2,1),
            labels=c("NA", "全く思わない", "あまり思わない",
            "どちらとも思わない","やや思う","思う"))
    
[/code]

このコードは、RStudio上では動作し、日本語を含む図が作成されます。しかし、PDFを作ろうとすると、

[code]

    > rmarkdown::render('test.Rmd')
    Quitting from lines 115-125 (test.Rmd)
     grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y,  でエラー:
       フォントタイプが不正です
     呼び出し:  <Anonymous> ... drawDetails -> drawDetails.text -> grid.Call.graphics
     追加情報:  50 件以上の警告がありました (最初の 50 個の警告を見るには warnings() を使って下さい)
    
[/code]

となって、PDFファイルを作成できません。いくつかの解決法も試して見ましたが、同じエラーが発生しました。([１](http://qiita.com/uri/items/615653e83642d7e475de#%E8%BB%B8%E3%83%A9%E3%83%99%E3%83%AB%E3%81%AB%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%92%E4%BD%BF%E3%81%86),
[２](http://qiita.com/kazutan/items/1f9da9ba2d83db26f3ad))

RMarkdownの設定は、

[code]

    ---
    title: 'Analysis'
    date: "`r format(Sys.time(), '%d %B, %Y')`"
    output:
     pdf_document:
      latex_engine: xelatex
      fig_width: 4.0
      fig_height: 2.8
      number_sections: true
      toc: true
      toc_depth: 2
    graphics: yes
    mainfont: YuMincho
    ---
    
[/code]

Rについては以下の通りです。

[code]

    > sessionInfo()
    R version 3.3.2 (2016-10-31)
    Platform: x86_64-apple-darwin16.1.0 (64-bit)
    Running under: macOS Sierra 10.12.2
    
[/code]

よろしくお願い致します。


CC BY-SA 3.0
2017-03-17T02:58:09.013
33375
2017-03-20T10:23:29.750
12704
question
ggplot2
RMarkdown: ggplot2で日本語を使用する


R が認識できるフォントはたとえば，`Japan1GothicBBB` とか `Japan1Ryumin` なので，これを指定するか。あるいは，Mac
であれば `quartz()`
デバイスを使うとよいようです。[参考](https://oku.edu.mie-u.ac.jp/~okumura/stat/first.html)

したがって，コードチャンクを以下のようにすればよいと思います：

[code]

    ```{r, dev = "pdf", dev.args = list(family = "Japan1Ryumin"), warning=FALSE}
    ggplot(pressure, aes(temperature, pressure)) + geom_point() + 
      xlab("気温") + ylab("気圧") + 
      theme_gray()
    ```
    
[/code]

あるいは

[code]

    ```{r, dev="quartz_pdf", warning=FALSE}
    ggplot(pressure, aes(temperature, pressure)) + geom_point() + 
      xlab("気温") + ylab("気圧") +
      theme_gray(base_family = "YuGo-Medium")
    ```
    
[/code]

`warning=FALSE`
を指定しないとたくさん警告がでますが，正しく出力されます。[このコメント](https://github.com/yihui/knitr/issues/436#issuecomment-11757370)で述べられている振る舞いに関係があるのかもしれません（未確認です）。

ところで，YAML ヘッダに `monofont: Ricty Discord`
といった行を追加して等幅日本語フォントの指定をしておかないと，コードブロックの日本語が表示されません。


CC BY-SA 3.0
2017-03-20T10:23:29.750
33422
2017-03-20T10:23:29.750
11184
33375
answer