Posted at

ggplot2で日本語フォントを指定したい

More than 1 year has passed since last update.


Q

ggplot2で日本語のフォントを指定したいです。


A

基本はtheme()レイヤーでフォントを設定したい部分を指定しながら設定していきます。ただ、ggplot2の古いバージョンによってはうまく動かない可能性があります。ここではv2.1.0以降を念頭に説明します。

指定するフォントを先に変数に入れておきます。今回のコードではこのフォント名を差し替えてもらえればいいかと思います:

font_A <- "IPAMincho"

font_B <- "IPAGothic"

なお、フォント名については、各実行環境で様々なので省略します。


テーマとして日本語のフォントを指定する

そのプロット全体にテーマフォントとしてフォント指定する場合は、`theme(text = element_text("FontName"))とフォントを指定すればOKです:

library(ggplot2)

d <- data.frame(X=rep(1:5, 2), Y=c(1:5, 5:1), A=rep(c('a','b'), each=5))

ggplot(data=d, aes(x=X, y=Y, group=A, color=A)) +
geom_line(size=2) +
labs(x="えっくす", y="わい", color="えー", title="たいとる") +
theme(text = element_text(family = font_A))

unnamed-chunk-2-1.png

このelement_text()関数の第一引数はfamily=なので、いきなりフォント名を当ててもOKです。詳しくは?elemet_textでヘルプを確認してください。


個別にフォント指定

個別に設定する場合は、theme()内の引数にaes属性を指定してelement_text()を渡します:

ggplot(data=d, aes(x=X, y=Y, group=A, color=A)) +

geom_line(size=2) +
labs(x="えっくす", y="わい", color="えー", title="たいとる") +
theme(text = element_text(family = font_A),
axis.title.x = element_text(family = font_B))

unnamed-chunk-3-1.png

上の例では、全体設定でfontA(IPAMincho)を設定し、x軸のタイトルを個別にfontB(IPAGothic)に設定しています。どの属性にどの属性に与えるかは、以下のリンクにある公式ドキュメントを参照してください:

http://docs.ggplot2.org/current/theme.html

このリンク先で、element_textが設定できる要素について設定できます。主なものを記述した例です:

ggplot(data=d, aes(x=X, y=Y, group=A, color=A))+

geom_line(size=2) +
labs(x="えっくす", y="わい", color="えー", title="たいとる") +
theme(text = element_text(family = font_A), #全体設定
title = element_text(family = font_B), #プロット、軸、凡例のタイトル全体設定
axis.title = element_text(family = font_A), #軸タイトルの全体設定
axis.title.x = element_text(family = font_B), #x軸のタイトル設定
axis.text = element_text(family = font_A), #軸テキスト(目盛りなど)の全体設定
axis.text.y = element_text(family = font_B), #y軸テキストの設定
legend.text = element_text(family = font_A), #凡例テキストの設定
legend.title = element_text(family = font_B), #凡例タイトルの設定
plot.title = element_text(family = font_A) #プロットタイトルの設定
)

unnamed-chunk-4-1.png


参考資料