我正在使用grid_arrange_shared_legend将具有相同图例的绘图组合成一个带有一个图例的绘图。有没有办法稍微编辑功能,所以它还共享x和y轴标签?例如,如果我制作3个图形并想要使用grid_arrange_shared_legend制作的那些图形的3x1网格,并且想要在最底部的共享x轴标签和左边的共享y轴标签,我该怎么做? 这是我用于函数的代码:
grid_arrange_shared_legend <- function(..., ncol=1, mytitle="mytitle") {
plots <- list(...)
g <- ggplotGrob(plots[[1]] + theme(legend.position="bottom"))[["grobs"]]
legend <- g[[which(sapply(g, function(x) x$name) == "guide-box")]]
lheight <- sum(legend$height)
grid.arrange(
do.call(arrangeGrob, c(ncol=ncol, lapply(plots, function(x)
x + theme(legend.position="none")))),
legend,
ncol = 1,
heights = unit.c(unit(.95, "npc") - lheight, lheight),
top=textGrob(mytitle, gp = gpar(fontsize=16)))
}
答案 0 :(得分:0)
我有同样的问题。
我的解决方案是在每个绘图中添加一个空白的x轴标题(以节省添加轴标题的空间):
p1 <- p1 + xlab(" ")
,然后创建带有共享图例的图:
grid_arrange_shared_legend(p1, p2, p3, position = "right")
然后我将新文本添加为新的轴标题:
grid.text("My title", y= 0.02, x=0.43)