gpt4 book ai didi

r - 绘制所有子组 - 维恩图

转载 作者:行者123 更新时间:2023-12-03 07:21:50 25 4
gpt4 key购买 nike

我最近一直在使用 R,并且遇到了一个有趣的问题。我必须绘制 9 个一列数据集的所有可能的维恩图(让我们将它们命名为 df1...df9)。我正在使用库(gplots),带有示例输入的 venn 代码是:

venn(list(df1,df2,df3,df4))

问题是:我如何生成这九个数据集的所有可能子集(总共有 126 个 - 计算使用的梳子函数。),并将它们导出到列表中,该列表可以输入到 venn 中。例如:(df1,df2),(df5,df4),(df3,df5,df8)。。。在这里,我将迭代所有选项并绘制每个选项的维恩图。感谢您的任何提示。

最佳答案

让我们从一个可重现的示例开始:

# Sample data (9 15-element subsets of the letters stored in a list)
set.seed(144)
(dfs <- replicate(9, sample(letters, 15), simplify=FALSE))
# [[1]]
# [1] "b" "r" "y" "l" "g" "n" "a" "u" "z" "s" "j" "c" "h" "x" "m"
#
# [[2]]
# [1] "b" "n" "m" "t" "i" "f" "a" "l" "k" "u" "o" "c" "g" "v" "p"
# ...

venn 函数不支持超过 5 组的维恩图,并且一组的维恩图非常无趣。因此,我将限制为具有两到五组的子集:

# Get all subsets with 2-5 elements
subs <- do.call(expand.grid, replicate(length(dfs), c(F, T), simplify=F))
subs <- subs[rowSums(subs) %in% 2:5,]
venns <- apply(subs, 1, function(x) venn(dfs[x], show.plot=F))

venns 现在包含所有 372 个维恩图对象。例如,您可以使用 plot(venns[[100]])

绘制特定的图

enter image description here

如果你真的想绘制所有维恩图,你可以这样做:

apply(subs, 1, function(x) {
png(paste0("venn_", paste(which(x), collapse="_"), ".png"))
venn(dfs[x])
dev.off()
})

这将创建 372 个包含维恩图的图像文件,根据包含的集合命名。

关于r - 绘制所有子组 - 维恩图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com