2012-11-08 17 views
107

私は、x軸にカテゴリ変数を、y軸に数値変数でグラフをプロットしています。ggplot2のフォントサイズと方向の変更

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

+0

そして、私はそれが 'hjust = 1 'であるべきだと思う別の1 http://stackoverflow.com/q/8097642/1172302 –

答えて

164

使用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 hereをフォーマットする方法についての良い情報がたくさんあります。 ?themeを使用して変更可能なパラメータのリスト(基本的にはすべて)を見ることができます。

+1

。 –

+0

本当ですか! Artemのコメントごとに修正されましたが、私は画像を更新しませんでした。 –

36

theme()の使用については、@Drew Steenを参照してください。ここには、軸のテキストとタイトルの共通のテーマ属性があります。

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

"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()) 

以下のように私は修理工場で一部除去周波数をプロットしていますまた、互いに重なり合わない程度に小さい。

11

使用テーマ():

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)) 
3

前の溶液に加え、あなたはまた、rel()関数を使用してフォントサイズ(base_size 11である)ようtheme_bw()などのテーマに含まbase_sizeから相対を指定することができ。例えば

ggplot(mtcars, aes(disp, mpg)) + 
    geom_point() + 
    theme_bw() + 
    theme(axis.text.x=element_text(size=rel(0.5), angle=90)) 
関連する問題