在 ggplot2 的 facet_grid 中旋转切换的面板标签

68

我希望使用facet_grid将一些条形图叠加在一起绘制:

library(ggplot2)

df <- group_by(mpg, manufacturer) %>%
  summarise(cty = mean(cty), hwy = mean(hwy)) %>%
  ungroup()

df <- melt(df, id.vars = "manufacturer")

ggplot() +
  geom_bar(data =df, aes(x = variable, y = value), stat = "identity") +
  facet_grid(manufacturer ~ ., switch = "y")

我使用ggplot2::facet_grid()switch参数,让分面标签显示在y轴上而不是每个分面的顶部。问题是分面标签是垂直绘制的,因此被裁剪了。有没有办法将分面标签水平绘制?到目前为止,我找到的所有问题都只涉及旋转x轴标签,而不是分面标签。

1个回答

123

您只需要添加theme()并在strip.text.y.left中指定角度即可。

library(tidyverse)
library(reshape2)

df <- group_by(mpg, manufacturer) %>%
  summarise(cty = mean(cty), hwy = mean(hwy)) %>%
  ungroup()

df <- melt(df, id.vars = "manufacturer")

ggplot() +
  geom_bar(data =df, aes(x = variable, y = value), stat = "identity") +
  facet_grid(manufacturer ~ ., switch = "y")+
  theme(strip.text.y.left = element_text(angle = 0))

注意,strip.text.y.left是在ggplot2 3.3.0中添加的。对于早期版本,您需要编写strip.text.y = element_text(angle = 180)

reprex包 (v0.3.0)于2020-03-15创建


问题已在 ggplot 存储库的此处报告为 issue #3888。点击此处查看。 - Fierr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接