Macでggplot2を日本語でPDF出力する
Macでggplot2を使って日本語PDF出力をするのに、生成AIに聞いたりして色々やってみたがエラーを吐く(うまく日本語が表示されない)ので検索して調べた結果、こちらの記事の中にある記述で解決した。
ggsave()の引数にdevice=quartzと指定することで日本語フォントを含んでいても出力できる。
p <- ggplot(...) + ... ggsave("...pdf", plot=p, device = quartz, type = "pdf")
ggplot日本語化の問題
ggplot2で日本語で描画するときに、macではきちんとフォントを指定しないと豆腐化する(文字化けして□になる)は知られた問題である。
library(tidyverse) # 図の例:mtcarsでシリンダーの数と燃費を比較 p <- ggplot(mtcars, aes(x=cyl,y = mpg, fill = factor(cyl))) + geom_boxplot() + labs(x = "シリンダー数", y="燃費(ガロンあたりのマイル)", fill="シリンダー数") p

theme_bw(base_family="...")とかtheme(text = element_text(family = "..."))でフォントを指定すると解決する。
# library library(tidyverse) library("systemfonts") # システム上で使える日本語フォントのリストを探す japanese_fonts <- system_fonts() |> filter(grepl("Hira|JP|Japanese|Gothic", family)) |> pull(family) |> unique() # 日本語フォント一覧の表示 print(japanese_fonts) # 修正した図の例:mtcarsでシリンダーの数と燃費を比較 p <- ggplot(mtcars, aes(x=cyl,y = mpg, fill = factor(cyl))) + geom_boxplot() + labs(x = "シリンダー数", y="燃費(ガロンあたりのマイル)", fill="シリンダー数")+ theme(text = element_text(family = "Hiragino Sans")) p

ggplot日本語化のpdf出力問題
ggsave()を使って、pdf出力するときにきちんと日本語が表示されなかった。
ggsave("シリンダーと燃費.pdf", plot = p, device="pdf")
Error in grDevices::pdf(file = filename, ..., version = version) : unused argument (type = "pdf")
出力されたファイルを見ると、文字があるべきところが真っ白になっている。
以下のようにdeviceにquartzと指定すると、きちんと日本語が表示される。
ggsave("シリンダーと燃費.pdf", plot = p, device=quartz, type="pdf")
元記事では、MacでもX11(Xquartz)をインストールして、cairo_pdf()を使うことが推奨されているが、とりあえず出力したい場合はこの方法が一番簡単そう。