Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R或Matplotlib(Python),如何基于CSV文件每行的值比较创建venn图?_Python_R_Csv_Matplotlib_Venn Diagram - Fatal编程技术网

使用R或Matplotlib(Python),如何基于CSV文件每行的值比较创建venn图?

使用R或Matplotlib(Python),如何基于CSV文件每行的值比较创建venn图?,python,r,csv,matplotlib,venn-diagram,Python,R,Csv,Matplotlib,Venn Diagram,我得到了一个需要制作维恩图的项目,我开始学习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(从9月开始)(

我得到了一个需要制作维恩图的项目,我开始学习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(从9月开始)(需要忽略0),y圆将显示值2(从9月和10月开始)

我认为这是一个相当复杂的程序,但我不知道从哪里开始,除了从以下几个方面开始:

from matplotlib_venn import venn2
当我使用诸如之类的在线工具时,它只是查找列表之间相似的数字,而不是逐行比较。这将导致外圈的值为0,重叠部分的值为3(因为输入中有三个不同的值:-1、0和1)

或者,如果用R代替Python会很容易,你能帮我吗


感谢您的帮助!

在R中,有许多选项可用于构建维恩图。您可以获得其中的一些选项

library(sos)
findFn('Venn diagramm')

例如,使用<代码> VnNexSt/<代码>(列表中的第一个)可以得到这个图。我使用随机值来生成它,因为您不清楚如何在问题中考虑共享和交叉区域。

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)

库(VennDiagram)
#您应该用您的值集替换此处的随机值
## 
种子(1)

A在R中,有许多选项可用于构建维恩图。您可以获得其中的一些选项

library(sos)
findFn('Venn diagramm')

例如,使用<代码> VnNexSt/<代码>(列表中的第一个)可以得到这个图。我使用随机值来生成它,因为您不清楚如何在问题中考虑共享和交叉区域。

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)

库(VennDiagram)
#您应该用您的值集替换此处的随机值
## 
种子(1)

A我不完全理解您的数字,但是
matplotlib-venn
软件包非常容易使用。在您的示例中,您可以从文本中使用
(Xy,Yx,Xy)=(1,2,2)
,只需运行

import matplotlib_venn as venn
v = venn.venn2((1, 2, 2))
v.get_label_by_id('A').set_text('x')
v.get_label_by_id('B').set_text('y')

文档很简单,也很简单。更棘手的是提取
(Xy,Yx,Xy)
数据中的元组,但我真的不理解您的计算,抱歉。如果您能解释得更详细一些,也许我可以提供更多的建议。

我不完全理解您的数字,但是
matplotlib-venn
包非常容易使用。在您的示例中,使用
(Xy,Yx,Xy)=(1,2,2)
从文本中,您只需运行

import matplotlib_venn as venn
v = venn.venn2((1, 2, 2))
v.get_label_by_id('A').set_text('x')
v.get_label_by_id('B').set_text('y')

文档很简单,也很简单。更棘手的是提取
(Xy,Yx,Xy)
数据中的元组,但我不太理解您的计算,抱歉。如果您能解释得更详细一点,也许我可以提供更多的建议。

这很好,谢谢!但实际上,我希望圆是x和y,因此重叠将是计算值相同的行数。这个月实际上是无关的ormation,很抱歉没有澄清。这很好,谢谢!但实际上,我希望圆圈是x和y,因此重叠将是数值相同的行数。月份实际上是无关信息,很抱歉没有澄清。