df <- data.frame(x1=c("A","B1","B2","C1","C2","C3"), x2=c("A","B","B","C","C","C"), y=c(1,2,3,4,5,6))
我正在寻找一种方法来躲避基于
x2
的条形,但在 x 轴上显示 x1
标签。我可以做这样的事情:
p <- ggplot(aes(x=x2, y=y, fill=x1), data=df)
p + geom_bar(stat="identity", position="dodge")
它正确地避开了条形,但现在我不知道如何用 x 轴上的
x2
标签替换 x1
标签。
一种选择是将
x1
映射到 x
上,但按 x2
进行分面以对条形图进行分组。对于小面,我使用 facet_grid
,因为它允许使用 space="free_x"
实现相同宽度的胸罩。但如果你不需要这样,你当然可以切换到facet_wrap()
:
library(ggplot2)
ggplot(aes(x = x1, y = y, fill = x1), data = df) +
geom_col(width = 1) +
facet_grid(~x2,
scales = "free_x",
switch = "x",
space = "free_x"
) +
theme(
strip.placement = "outside",
strip.text = element_blank(),
)