grid.arrange 从 gridExtras 退出,更新后“gList”中只允许“grobs”

Xia*_*Yin 2 r venn-diagram

我使用包“VennDiagram”绘制了四个称为 P1、P2、P3、P4 的维恩图。然后想 grid.arrange 将四个图形放在一页上。

我使用的代码是:

 P1=draw.pairwise.venn(20,63,6,category = c("blastp", "HMM"), lty =rep("blank",2),fill = c("#9067A7", "#9067A7"), alpha = rep(0.5, 2), cat.pos = c(0,0),cat.dist = rep(0.025, 2),inverted=TRUE)
 P2=draw.pairwise.venn(3,242,3,category = c("blastp", "HMM"), lty = rep("blank",2),fill = c("#AB6857", "#AB6857"), alpha = rep(0.5, 2), cat.pos = c(0,0),cat.dist = rep(0.025, 2))
 P3=draw.pairwise.venn(7,107,0,category = c("blastp", "HMM"), lty = rep("blank",2),fill = c("#bc767c", "#bc767c"), alpha = rep(0.5, 2), cat.pos = c(0,0),cat.dist = rep(0.025, 2))
 P4=draw.pairwise.venn(11,1,0,category = c("blastp", "HMM"), lty = rep("blank",2),fill = c("#628130", "#628130"), alpha = rep(0.5, 2), cat.pos = c(0,0),cat.dist = rep(0.025, 2))
 grid.arrange(P1, P2, P3, P4, ncol=2)
Run Code Online (Sandbox Code Playgroud)

但是出现了一个错误:

 Error: $ operator is invalid for atomic vectors  
Run Code Online (Sandbox Code Playgroud)

尝试时:

 grid.arrange(grid.draw(P1), grid.draw(P2), grid.draw(P3), grid.draw(P4), ncol=2) 
Run Code Online (Sandbox Code Playgroud)

仍然错误,但更改为:

only 'grobs' allowed in "gList"  
Run Code Online (Sandbox Code Playgroud)

我想将这四个粘贴在一页上。

ric*_*rks 5

我不确定这是否与更新有关,但我总是像这样安排 venndiagrams:

grid.arrange(grobTree(P1), grobTree(P2), grobTree(P3), grobTree(P4), ncol=2)
Run Code Online (Sandbox Code Playgroud)

您需要将 venndiagrams 转换为网格图形对象 (grob)。

  • 假设您可以使用`grid.arrange(grobs=lapply(list(P1, P2, P3, P4), grobTree), ncol=2)`减少重复 (3认同)