我想在x轴下方添加一条线,其颜色取决于未绘制的因子。
在此示例中,我正在创建一个箱形图,并希望添加一条线来指示另一个变量。
以汽车数据集为例,然后从身体上去尝试我要做的事情:
ggplot(mtcars, aes(factor(cyl), mpg, fill=factor(am))) +
geom_boxplot()
我的想法是创建一个条形图,一个柱形图或geom_tile图,然后将其布置在boxplot下。这就是我在基准R中的处理方式。是否可以在ggplot2中添加此类颜色标签?
答案 0 :(得分:6)
ggplot2
中执行此类操作的自然方式将是在分类变量上创建子图。但是,如果您希望将所有内容都保留在同一张图上,则可以尝试使用geom_tile()
层,如下所示:
df <-data.frame(x = factor(c(4,6,8)), colour = factor(c(1,2,1)))
ggplot(mtcars, aes(factor(cyl), mpg, fill=factor(am))) +
geom_boxplot() +
geom_tile(data=df, aes(x = x, y = 8, fill = colour))
或者,如您建议的那样,您可以在其下对齐其他图。您可以在ggarrange()
包中使用ggpubr
:
plot1 <- ggplot(mtcars, aes(factor(cyl), mpg, fill=factor(am))) +
geom_boxplot() +
geom_tile(data=df, aes(x = x, y = 10, fill = colour))
theme(legend.position = 'none')
plot2 <- ggplot(df, aes(x=x, y=1, fill = colour)) +
geom_tile() +
theme_void() +
scale_fill_manual(values=c('orange', 'green', 'orange')) +
theme(legend.position = 'none')
library(ggpubr)
ggarrange(plot1, plot2, nrow = 2, heights = c(10, 1), align = 'h')