web-dev-qa-db-ja.com

ggplot2でのAxesのフォントサイズと方向の変更

X軸にカテゴリカル変数、y軸に数値変数を使ってグラフを描いています。

X軸の場合、データポイントが多数あることを考えると、デフォルトのテキストフォーマットでは、各目盛りのラベルが他のラベルと重なります。 (a)軸のテキストのフォントサイズを変更し、(b)テキストが軸に垂直になるようにテキストの向きを変更するにはどうすればよいですか。

150
Anjan

theme()を使う:

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
    theme(text = element_text(size=20),
        axis.text.x = element_text(angle=90, hjust=1)) 
#vjust adjust the vertical justification of the labels, which is often useful

enter image description here

Ggplotsをフォーマットする方法 については、ここにたくさんの良い情報があります?themeを使用して、変更できるパラメータの完全なリスト(基本的にそれらすべて)を見ることができます。

240
Drew Steen

theme()の使用方法については@Drew Steenを読んでください。軸のテキストとタイトルの一般的なテーマ属性は次のとおりです。

ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
  geom_point()+
  theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
        axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),  
        axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
        axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))
60
metasequoia

テーマを使用():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20))
14
meduvigo

theme_bw()関数を使用して、rel()base_sizeは11)などのテーマに含まれるbase_sizeに対するフォントサイズ相対を指定することもできます。 。

例えば:

ggplot(mtcars, aes(disp, mpg)) +
  geom_point() +
  theme_bw() +
  theme(axis.text.x=element_text(size=rel(0.5), angle=90))
12
Megatron

「fill」属性を使用すると、このような場合に役立ちます。 element_blank()を使用して軸からテキストを削除し、凡例付きの多色棒グラフを表示することができます。以下のように修理工場での部品取り外し頻度をプロットしています

ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x  = element_blank())

私は棒グラフにたくさんのバーがあるので私は私の場合この解決策を選びました、そして私は読みやすく、また互いに重ならないほど十分に小さい適切なフォントサイズを見つけることができませんでした。

3
user131476

多くのプロットを作成するとき、それをグローバルに設定することは理にかなっています(関連する部分は2行目です。3行が一緒になった実用的な例です)。

   library('ggplot2')
   theme_update(text = element_text(size=20))
   ggplot(mpg, aes(displ, hwy, colour = class)) + geom_point()
1
JJJ