我有一个需要制作维恩图的项目,并且我开始学习 python(使用 2.7),所以我认为尝试学习 R 也会让我的工作负担过重。所以,我在网上学习了matplotlib。基本上,我需要做的是创建一个维恩图,比较每列下的值以生成维恩图。因此,如果我的 csv 具有以下数据:
Month x y
Sept -1 1
Oct 0 1
Nov 1 1
Dec -1 -1
重叠将显示值为 2(因为 nov 和 dec 具有相同的值),x 圆圈本身将显示值为 1,从 sept 开始(需要忽略 0),y 圆圈将从 9 月到 10 月显示值为 2。
我认为这是一个非常复杂的程序,但我不知道从哪里开始,除了从:
from matplotlib_venn import venn2
当我使用 Venny 等在线工具时,它只是找到列表之间相似的数字,而不是逐行比较。这不会导致外圈中的值 0 和重叠中的数字 3(因为输入中存在三个不同的值:-1、0 和 1。
或者,如果使用 R 而不是 Python 会非常容易,你能帮我吗?
任何帮助将不胜感激,谢谢!
请您参考如下方法:
在 R 中有很多选项可以构建维恩图。你可以得到其中的一些
library(sos)
findFn('Venn diagramm')
例如使用VennDiagram(列表中的第一个)你可以得到这个图。我使用随机值生成它,因为您不太清楚您如何考虑问题中的共享区域和交叉区域。
library(VennDiagram)
# You should replace the random values here by your set of values
##
set.seed(1)
A <- sample(1:100, 25, replace = FALSE)
B <- sample(1:100, 25, replace = FALSE)
C <- sample(1:100, 25, replace = FALSE)
D <- sample(1:100, 25, replace = FALSE)
venn.plot <- venn.diagram(
x = list(
Sept = A,
Oct = D,
Nov = B,
Dec = C
),
filename = NULL,
col = "transparent",
fill = c("cornflowerblue", "green", "yellow", "darkorchid1"),
alpha = 0.50,
label.col = c("orange", "white", "darkorchid4", "white",
"white", "white", "white", "white", "darkblue", "white",
"white", "white", "white", "darkgreen", "white"),
cex = 1.5,
fontfamily = "serif",
fontface = "bold",
cat.col = c("darkblue", "darkgreen", "orange", "darkorchid4"),
cat.cex = 1.5,
cat.pos = 0,
cat.dist = 0.07,
cat.fontfamily = "serif",
rotation.degree = 270,
margin = 0.2
)
grid.draw(venn.plot)
