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