2010-05-01 27 views
67

我想知道如何操纵小平面图中条形文字的大小。我的问题 与a question on plot titles类似,但我特别关注的是 不是操纵剧情标题,而是操作片段标题(strip_h)中出现的文字。如何操作facet_grid图的条形文字?

作为示例,请考虑mpg数据集。

library(ggplot2) 
    qplot(hwy, cty, data = mpg) + facet_grid(. ~ manufacturer) 

由此产生的output会产生一些不符合条带的分面标题。

我在想,必须有一种方法来使用grid来处理带状文字。但我仍然是 新手,并不能确定从grid附录Hadley's book如何, 准确地做到这一点。另外,我很害怕,如果我这样做是错了,它会打破我的洗衣机 机,因为我相信所有的技术是通过强制提前连接:-(

非常感谢。

回答

95

您可以修改strip.text.x(或strip.text.y)使用theme_text(),例如

qplot(hwy, cty, data = mpg) + 
     facet_grid(. ~ manufacturer) + 
     opts(strip.text.x = theme_text(size = 8, colour = "red", angle = 90)) 

更新:为GGPLOT2版> 0.9.1

qplot(hwy, cty, data = mpg) + 
     facet_grid(. ~ manufacturer) + 
     theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90)) 
+0

+1非常好。有没有办法改善x轴注释? – 2010-05-01 19:18:19

+0

谢谢rcs。我与gd047,也许这应该是一个单独的问题?我想,你注意到的是主要x值的拥挤。 应该有一种方法来手动设置主要x轴和y轴刻度标记的值,但我不记得它是什么:-( – briandk 2010-05-01 19:50:12

+0

@ gd047:'axis.text.x = theme_text( ...)' – rcs 2010-05-01 19:56:12

24

现在optstheme_text的使用似乎不推荐使用。 R建议使用themeelement_text。有解决的答案可以在这里找到:http://wiki.stdout.org/rcookbook/Graphs/Facets%20%28ggplot2%29/#modifying-facet-label-text

qplot(hwy, cty, data = mpg) + 
     facet_grid(. ~ manufacturer) + 
     theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90)) 
+0

感谢您的回答,如果您可以提供一个更好的答案总结和代码示例从你的链接,在这里SO。因此,我们不依赖于链接仍然存在,因为内容是直接在SO上 – 2012-10-19 13:00:11

+1

我添加了一个代码示例 – moi 2012-10-31 13:25:04

3

我猜的mpg的例子改变旋转角度和字体大小是好的,但在很多情况下,你可能会发现自己与有相当长的标签变量,它可以成为一个痛苦的脖子(字面上)尝试阅读旋转冗长的标签。因此,除了(或补充)改变角度和大小之外,我通常会重新定义可以以合理的方式拆分它们的因素的标签,以定义它们的标签。

通常,如果我有一个​​用绳子,看起来像

c("median_something", "aggregated_average_x","error","something_else") 

我简单地做:。也许也有reformat更好的定义,但至少这一个工程精]

reformat <– function(x,lab="\n"){ sapply(x, function(c){ paste(unlist(strsplit(as.character(c) , split="_")),collapse=lab) }) } 

dataset$variable <- factor(dataset$variable, labels=reformat(dataset$variable, lab='\n') 

而且在磨制,所有标签将b非常可读:

ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable) 
+0

也许这样的东西更好:水平(鸟$效果)< - gsub(“”,“\ n”,levels(鸟$效果)) – dca 2017-07-08 22:27:38

相关问题