ggplot在X轴下方添加跟踪颜色

时间:2018-08-14 19:36:53

标签: r ggplot2

我想在x轴下方添加一条线,其颜色取决于未绘制的因子。

在此示例中,我正在创建一个箱形图,并希望添加一条线来指示另一个变量。

以汽车数据集为例,然后从身体上去尝试我要做的事情:

ggplot(mtcars, aes(factor(cyl), mpg, fill=factor(am))) + 
geom_boxplot()

enter image description here

我的想法是创建一个条形图,一个柱形图或geom_tile图,然后将其布置在boxplot下。这就是我在基准R中的处理方式。是否可以在ggplot2中添加此类颜色标签?

1 个答案:

答案 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)) 

enter image description here

或者,如您建议的那样,您可以在其下对齐其他图。您可以在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')

enter image description here