R

时间:2019-01-15 15:58:20

标签: r venn-diagram

我想绘制> 50个维恩/欧拉图,两组分别按比例绘制。 不仅必须缩放两个集合的重叠部分,而且集合大小本身也应该缩放,而且各个图的大小要相互比较。

由于我不知道有哪个R包可以同时绘制> 50个成对的维恩图,所以我打算首先分别绘制它们(例如,使用eulerr),然后将它们全部放在一起使用gridExtra软件包或类似的软件包。

但是,以这种方式,各个成对图的大小是不可比的:

require(gridExtra)
require(eulerr)
fit1 <- euler(c(A=300, B=500, "A&B"=100))
fit2 <- euler(c(A=40, B=70, "A&B"=30))
grid.arrange(plot(fit1), plot(fit2), nrow=1)

有人知道R包或包的组合,这些包或包的组合将允许按尺寸绘制几个成对的维恩图吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用widths的{​​{1}}参数。您将必须确定每个维恩图总数的比率。在您的示例中,总大小比率为grid.arrange,即800:110,因此,如果您执行7.27,则grid.arrange(plot(fit1), plot(fit2), ncol = 2, widths = c(7.27, 1))将比fit2小得多。 ggpubr的fit1函数也应该起作用。

ggarrange()

enter image description here

编辑:希望各个成对的集合具有自己的大小比率,而不是相对于全局最大值的所有大小比率。这是一个简单的示例,但是您可以编写一个函数来自动为每个函数执行此操作。基本上设置最大列数(我刚选择了100),然后将每个比率转换为100以内。为每个维恩图集设置一行,然后fit1 <- euler(c(A=300, B=500, "A&B"=100)) fit2 <- euler(c(A=40, B=70, "A&B"=30)) tot1 <- 800 tot2 <- 110 ratio_v <- tot1/tot2 grid.arrange(plot(fit1), plot(fit2), ncol = 2, widths = c(ratio_v, 1)) ggpubr:ggarrange(plotlist = list(plot(fit1), plot(fit2)), ncol = 2, widths = c(ratio_v, 1)) 将它们全部转换成矩阵并使用rbind参数。

layout_matrix

enter image description here