R图形:如何使VennDiagram中的对象与cowplot plot_grid兼容?

3

我正在使用VennDiagram软件包制作维恩图。它们看起来还可以:

library(VennDiagram)
library(cowplot)


png("p.png")
p = draw.pairwise.venn(30,20,11, category = c("Dogs", "Cats"), lty = rep("blank", 2), fill = c("light blue", "pink"), alpha = rep(0.5, 2), cat.pos = c(-45, 45), cat.dist = rep(0.025, 2))
dev.off()

png("q.png")
draw.pairwise.venn(15, 20, 10, category = c("Rats", "Mice"), lty = rep("blank", 2), fill = c("light blue", "pink"), alpha = rep(0.5, 2), cat.pos = c(-45, 45), cat.dist = rep(0.025, 2))
dev.off()    

在这里输入图片描述 在这里输入图片描述

但是如果使用cowplot的plot_grid()函数并排绘制,会出现问题:

p = draw.pairwise.venn(30,20,11, category = c("Dogs", "Cats"), lty = rep("blank", 2), fill = c("light blue", "pink"), alpha = rep(0.5, 2), cat.pos = c(-45, 45), cat.dist = rep(0.025, 2))

q = draw.pairwise.venn(15, 20, 10, category = c("Rats", "Mice"), lty = rep("blank", 2), fill = c("light blue", "pink"), alpha = rep(0.5, 2), cat.pos = c(-45, 45), cat.dist = rep(0.025, 2))

png('pq.png')
plot_grid(p, q, labels = "AUTO")
dev.off()

Error: Argument needs to be of class "ggplot", "gtable", "grob", "recordedplot", or a function that plots to an R graphicsdevice when called, but is a gList
Calls: plot_grid -> align_plots -> lapply -> FUN -> plot_to_gtable
Execution halted

draw.pairwise.venn() 无法与 plot_grid() 兼容。


class(p)
[1] "gList"

所以我想我需要将 gList 转换成 ggplot 对象或其他兼容对象,即使 gList 被列为合适的类型。但我一直没有找到任何内容。我想使用 cowplot,因为它可以很好地标注子图以供出版。

1个回答

3
将这些图包装到grobTree()中对我有用。我认为这里应该归咎于VennDiagram软件包。它不应该返回一个gList,而应该将gList包装成一个grob。无论如何,这可以在cowplot中修复。请随意在此处提交问题。
library(VennDiagram)
#> Loading required package: grid
#> Loading required package: futile.logger
library(cowplot)
library(grid)

p = draw.pairwise.venn(30,20,11, category = c("Dogs", "Cats"), lty = rep("blank", 2), fill = c("light blue", "pink"), alpha = rep(0.5, 2), cat.pos = c(-45, 45), cat.dist = rep(0.025, 2))

q = draw.pairwise.venn(15, 20, 10, category = c("Rats", "Mice"), lty = rep("blank", 2), fill = c("light blue", "pink"), alpha = rep(0.5, 2), cat.pos = c(-45, 45), cat.dist = rep(0.025, 2))

plot_grid(grobTree(p), grobTree(q), labels = "AUTO")

这段文字是由 reprex package (v0.2.0) 创建于2018年6月23日。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接