我想使用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")

我使用switchggplot2::facet_grid()参数使构面标签显示在y轴上,而不是显示在每个构面的顶部。问题是构面标签是垂直绘制的,因此被裁剪。有什么办法可以水平绘制构面标签?到目前为止,我发现的所有问题仅与旋转x轴标签有关,而与构面标签无关。

最佳答案

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

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))

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

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

关于r - 在ggplot2中旋转切换的构面标签facet_grid,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40484090/

10-11 23:11
查看更多