我有一个相当复杂的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)
期望的样子:
答案 0 :(得分:10)
g1 <- ggplotGrob(plot1)
g2 <- ggplotGrob(plot2)
g1 <- gtable::gtable_add_grob(g1, g2, t = 8, l=7)
grid.newpage()
grid.draw(g1)