gpt4 book ai didi

r - 从 R 中的 CSV 文件创建 5 向维恩图

转载 作者:行者123 更新时间:2023-12-01 22:15:05 25 4
gpt4 key购买 nike

我有一项调查的结果,人们回答了 5 个问题,1 = 是,0 = 否,关于他们如何描述自己,工匠设计师制造商精细艺术家其他。

我想看看人们是如何重叠识别的。我想在维恩图中获取信息。我发现的大部分内容都向我展示了如何获取每个部分,例如。 n1,n2, ...n12345,然后用 draw.quintuplet.venn 绘制图表,因为会有 20 个部分,我想看看是否有更简单的方法来做到这一点,而不必复制代码 20 次轻微的调整。

我已经安装了 venndiagram 包,但我正在努力如何将它与 5 个部分一起使用。使用 venn.diagram 但不确定在括号中输入什么。

数据看起来下降了大约 300 行(对齐方式有点偏离,但每个标题都有一列)

工匠设计师制造商美术家其他

 0         1            0      0    1       1
1 1 0 0 0 1
0 0 0 0 0 1
0 0 0 0 1 1

谢谢

最佳答案

对于 VennDiagram 库,每个集合的交集都需要定义。我同意这可能很麻烦。我最近遇到了库 eulerr。除此之外,这个包试图使集合/交叉区域与计数成正比。

这是一个有 4 组的例子:

首先是一些数据:

set.seed(2)
df = data.frame(A = sample(c(0, 1), 100, replace = T),
B = sample(c(0, 1), 100, replace = T),
C = sample(c(0, 1), 100, replace = T),
D = sample(c(0, 1), 100, replace = T))


library("eulerr")
set.seed(10) #this seed changes the orientation of the sets
plot(euler(df), counts = T, fontface = 1)

enter image description here

你也可以用维恩图的方式来做:

set.seed(10)
sp_euler = with(df,
euler(c("A" = sum(A),
"B" = sum(B),
"C" = sum(C),
"D" = sum(D),
"A&B" = sum(A == 1 & B == 1),
"A&C" = sum(A == 1 & C == 1),
"A&D" = sum(A == 1 & D == 1),
"B&C" = sum(B == 1 & C == 1),
"B&D" = sum(B == 1 & D == 1),
"C&D" = sum(C == 1 & D == 1),
"A&B&C" = sum(A == 1 & B == 1 & C == 1),
"A&B&D" = sum(A == 1 & B == 1 & D == 1),
"A&C&D" = sum(A == 1 & C == 1 & D == 1),
"B&C&D" = sum(B == 1 & C == 1 & D == 1),
"A&B&C&D" = sum(A == 1 & B == 1 & C == 1 & D == 1)), input = "union"))

plot(sp_euler, counts = T, fontface = 1)

5 组:

set.seed(2)
df = data.frame(A = sample(c(0, 1), 100, replace = T),
B = sample(c(0, 1), 100, replace = T),
C = sample(c(0, 1), 100, replace = T),
D = sample(c(0, 1), 100, replace = T),
E = sample(c(0, 1), 100, replace = T))

set.seed(10)
plot(euler(df), counts = T, fontface = 1)

enter image description here

然而,这可能并不适合所有集合,因为如果欧拉模型无法描述所有交点,则不会绘制计数。例如在 4 组示例中,B 和 D 的交集是 5 而不是 0,就像可以从图中得出的结论:

set.seed(2)
df = data.frame(A = sample(c(0, 1), 100, replace = T),
B = sample(c(0, 1), 100, replace = T),
C = sample(c(0, 1), 100, replace = T),
D = sample(c(0, 1), 100, replace = T))
eu_model = euler(df)
eu_model
#output:

original fitted residuals region_error
A 5 5.022 -0.022 0.023
B 5 5.000 0.000 0.023
C 8 8.004 -0.004 0.037
D 7 7.012 -0.012 0.033
A&B 6 0.000 6.000 0.065
A&C 5 4.985 0.015 0.023
A&D 9 8.978 0.022 0.041
B&C 11 11.004 -0.004 0.051
B&D 5 0.000 5.000 0.054
C&D 6 0.000 6.000 0.065
A&B&C 8 7.985 0.015 0.037
A&B&D 4 0.000 4.000 0.043
A&C&D 7 7.018 -0.018 0.033
B&C&D 6 0.000 6.000 0.065
A&B&C&D 1 0.000 1.000 0.011

diag_error: 0.065
stress: 0.23

另一种选择是limma

library(limma) # part of bioconductor

安装:

source("http://www.bioconductor.org/biocLite.R")    
biocLite("limma")
library(limma)

绘制:

vennDiagram(vennCounts(df), circle.col = 1:5)

enter image description here

关于r - 从 R 中的 CSV 文件创建 5 向维恩图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629193/

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