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

Posted

技术标签:

【中文标题】在 ggplot2 facet_grid 中旋转切换的构面标签【英文标题】:Rotate switched facet labels in ggplot2 facet_grid 【发布时间】:2017-03-21 21:54:27 【问题描述】:

我想使用 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轴上,而不是在每个分面的顶部。问题是刻面标签是垂直绘制的,因此被裁剪了。有什么方法可以水平绘制 facet 标签?到目前为止,我发现的所有问题都与旋转 x 轴标签有关,而不是与分面标签有关。

【问题讨论】:

【参考方案1】:

您只需添加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 package (v0.3.0) 于 2020-03-15 创建

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

【讨论】:

问题在 ggplot repo 上报告为问题 #3888 here:

以上是关于在 ggplot2 facet_grid 中旋转切换的构面标签的主要内容,如果未能解决你的问题,请参考以下文章

带有 facet_grid 的 ggplot2 中具有多个分类变量的堆积条形图

ggplot2 facet_grid 带有构面标题

ggplot2:从图中删除未使用的因子水平组合的方面(facet_grid)

ggplot2,facet_grid 的 x 轴问题

使用 purrr 时如何自定义 ggplot2 facet_grid 标签中的文本?

如何使用不同的几何图形将边际总计添加到 ggplot2 facet_grid 图