如何处理facet_grid图的条形文本?


100

我想知道如何在多面图中绘制带状文字的大小。我的问题类似于关于情节标题的问题,但是我特别关心的不是操纵情节标题,而是操纵刻面标题(strip_h)中出现的文本。

例如,考虑mpg数据集。

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

产生的输出会产生一些带状标题,这些标题不适合该区域。

我认为必须有一种方法grid来处理带状文本。但是我还是一个新手,从哈德利的书grid附录中不确定该怎么做。另外,我担心如果做错了,会损坏洗衣机,因为我相信所有技术都是通过The Force连接的:-(

提前谢谢了。

Answers:


134

您可以修改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))

+1非常好。有没有办法改善x轴注释?
乔治·唐塔斯

谢谢rcs。我使用gd047,也许这应该是一个单独的问题?我认为您注意到的是主要x值的拥挤。应该有一种方法可以手动设置主要的x轴和y轴刻度线的值,但是我不记得它是什么了:-(
briandk 2010年

@ gd047:axis.text.x=theme_text(...)
rcs 2010年

1
此Q中的链接应该提供一些信息性:stackoverflow.com/questions/2258784/list-of-ggplot2-options
RomanLuštrik2012年


6

我想在示例中mpg更改旋转角度和字体大小是可以的,但是在很多情况下,您可能会发现自己的标签很长,并且尝试读取旋转的长标签可能会很麻烦(从字面上看) 。

因此,除了(或补充)不断变化的角度和大小外,我通常会重新格式化定义条件的因素的标签,facet_grid只要这些因素能够以有意义的方式进行分割即可。

通常,如果我有一个dataset$variable看起来像的字符串

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

我只是做:

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

[也许有更好的定义,reformat但至少这可以正常工作。]

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

从侧面看,所有标签都将非常可读:

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

1
也许这样会更好:levels(birds $ effect)<-gsub(“”,“ \ n”,levels(birds $ effect))
dca
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.