如何从顶部到底部更改ggplot中条形标签的位置?


80

我知道这不是一个数据可视化问题,而是老板要求的,所以我需要弄清楚是否有可能。

谢谢!



11
ggplot2是功能强大但自以为是的软件-有时它是ggplot方式,或者根本没有。
沙皮犬

同意,那么需要使用网格做一些修改,然后再一次陡峭的学习曲线
lokheart 2010年

见在评论链接论坛发帖stackoverflow.com/questions/10058839/...,这给需要的网格两轮牛车
奔Bolker

1
您能否不接受已接受的答案?它不再正确,但是在对问题进行谷歌搜索时,此答案是最热门的。
Konrad Rudolph

Answers:


97

2016年搜寻者的答案。

ggplot22.0版开始,switch参数将为facet_grid或执行此操作facet_wrap

默认情况下,标签显示在图的顶部和右侧。如果为“ x”,则顶部标签将显示在底部。如果为“ y”,则右侧标签将显示在左侧。也可以设置为“两者”。

ggplot(...) + ... + facet_grid(facets, switch="both")

从ggplot2 2.2.0开始

现在,可以facet_wrap()使用strip.position参数(不建议使用switch)自由定位条带。

当前文档仍为2.1,但strip.position记录在开发文档中。

默认情况下,标签显示在图的顶部。使用strip.position可以通过设置将标签放置在四个侧面中的任何一个上strip.position = c("top", "bottom", "left", "right")

ggplot(...) + ... + facet_wrap(facets, strip.position="right")

2
2020更新- ggplot 3.3 -facet_grid 仍然使用 switch与论证xyboth
nniloc

11

您现在可以使用facet_wrap(~var, strip.position = "bottom"),尽管由于某种原因这会导致标签位于轴刻度线标签上方,而不是下方(我认为这更有意义),如您从图形中一小部分的屏幕截图中所见

图的屏幕截图

如果要在下面贴上标签,您可以这样做

ggplot(zzz, aes(x = c1, y = c2)) +
  facet_wrap(~ gp, scales = "free", nrow = 3, strip.position = "bottom") +
  geom_point() +
  theme(
    aspect.ratio = 1,
    strip.background = element_blank(),
    strip.placement = "outside"
  )

如此处所示:https : //github.com/tidyverse/ggplot2/issues/2622


-2

答案是肯定的!

theme(strip.text=element_text(vjust=-10))

数字-10由您在绘图中使用的比例和单位确定。


1
对我也没有影响
geotheory,2017年

这仅调整文本,而不调整条形图在图表上的位置。
泰勒·怀特

1
对我也没有影响,建议使用switch上面指定的参数。具体回答OP;switch = "x"将标签移动到图的底部。
EcologyTom

谢谢 !您的解决方案帮助我解决了我遇到的另一个问题:使标签保持对齐(使用“对齐”而不是“对齐”)。
rvezy

-5

要遵循主题的使用:

主题(strip.text = element_text(vjust = -10))

确保所有标签都带有相同数量的回车符。

Label /n Facet /n One调整的速度与调整的速度不同Label /n Facet Two

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.