添加另一个ggplot来/注释facet_wrap图

时间:2014-03-22 22:15:17

标签: r ggplot2

我有一个相当复杂的facet_wrap的等值区域地图,它们共享一个共同的图例并将它们分成单独的图。我想在未使用的构面区域添加另一个非常简单的条形图。我想我可以使用annotation_custom,如下所示:

https://github.com/hadley/ggplot2/wiki/Mixing-ggplot2-graphs-with-other-graphical-output

p = qplot(1:10, 1:10) + theme_bw()
g = ggplotGrob(qplot(1, 1))
p + annotation_custom(grob = g, xmin = 2, xmax = 7, ymin = 6, ymax = 10)

但即使在使用x / y-min / max时,这似乎也没有正确调整大小。它似乎想要在每个方面进行注释。不是我想要的。

将每个方面分成单独的图并使用gridExtra::grid.arrange将很困难,因为每个方面共同生成的共享渐变图例。

plot1 <- ggplot(mtcars, aes(factor(mtcars$gear))) + 
    geom_bar() + 
    facet_wrap(~cyl, ncol=2) + 
    coord_flip()


plot2 <- ggplot(mtcars, aes(as.factor(am))) + 
    geom_bar(aes(fill=factor(cyl)))

这失败了(每个方面的图表):

g <- ggplotGrob(plot2)

plot1 + annotation_custom(grob = g, xmin = 0, xmax = 1, ymin = 0, ymax = 1)

期望的样子:

enter image description here

1 个答案:

答案 0 :(得分:10)

g1 <- ggplotGrob(plot1)
g2 <- ggplotGrob(plot2)

g1 <- gtable::gtable_add_grob(g1, g2, t = 8, l=7)
grid.newpage()
grid.draw(g1)