我想绘制> 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包或包的组合,这些包或包的组合将允许按尺寸绘制几个成对的维恩图吗?
答案 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()
编辑:希望各个成对的集合具有自己的大小比率,而不是相对于全局最大值的所有大小比率。这是一个简单的示例,但是您可以编写一个函数来自动为每个函数执行此操作。基本上设置最大列数(我刚选择了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