2012-11-08 1371 views
107

我正在绘制一个图表,其中包含x轴上的分类变量和y轴上的数值变量。在ggplot2中更改轴文本的字体大小和方向

对于x轴,假设有很多数据点,默认的文本格式会使每个刻度标记的标签与其他标签重叠。我如何(a)更改我的轴文本的字体大小和(b)更改文本的方向以使文本垂直于轴?

+0

而另一个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

我觉得应该是'hjust = 1'。 –

+0

真的!根据Artem的评论修正,但我没有更新图像。 –

36

同上@Drew Steen使用theme()。以下是轴文本和标题的常用主题属性。

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

使用“填充”属性有助于这样的情况。您可以使用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纳入主题,如theme_bw()(其中base_size为11) 。

例如:

ggplot(mtcars, aes(disp, mpg)) + 
    geom_point() + 
    theme_bw() + 
    theme(axis.text.x=element_text(size=rel(0.5), angle=90)) 
相关问题