2012-11-08 1444 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)) 
相關問題