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