55

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

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

4

1 回答 1

99

您只需要在 中添加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))

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

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

于 2016-11-08T10:33:56.110 回答