指定收集图例在Patchwork中的具体位置

omvjsjqw  于 2022-12-25  发布在  其他
关注(0)|答案(2)|浏览(320)

我使用r中的patchwork包来创建图面板,如下所示:

panel<- (p1+  plot_spacer()+p2 + p3)+
    plot_layout(ncol = 2) +
  plot_layout(guides = "collect")
panel

我想指定图例以转到右上方的空面板,大致如下

所示
感谢您的指点

sg3maiej

sg3maiej1#

对于此用例,patchwork提供可用于放置图例的guide_area()

library(patchwork)
library(ggplot2)

p1 <- p2 <- p3 <- ggplot(mtcars, aes(hp, mpg, color = factor(cyl))) +
  geom_point()

p1 + guide_area() + p2 + p3 +
  plot_layout(ncol = 2) +
  plot_layout(guides = "collect")

1hdlvixo

1hdlvixo2#

正如@kat所建议的,一种解决方案是将牛斑图与拼凑图结合使用

library("cowplot")
library("patchwork")
 
legend_grob <-cowplot::get_legend(p1) #get legend

#emove legend in the original plots
p1 <- p1+theme(legend.position = "none")
p2 <- p2+theme(legend.position = "none")
p3 <- p3+theme(legend.position = "none")

# now patchwork it
p1+legend_grob+p2+p3)
    plot_layout(ncol = 2)

相关问题