三套以上维恩图绘图包

venndata的Python项目详细描述


<;img src=“https://github.com/mandalsubhajit/venndata/blob/master/venndata.png”width=“200”>

#vennda-在Python中为任意数量的集合绘制Venn图

灵感来自维恩jsd3js的包(https://github.com/benfred/venn.js/

##简要说明

在数据科学中,我们经常需要将维恩图可视化3组以上。这个模块有助于解决这个问题。使用非常简单,通常效果很好。如果情况不需要,fineTune选项应设置为“False”;它有助于获得准确的位置,但速度要慢得多。此模块可以直接从具有成员资格指示列的数据帧中读取,并自行计算所有重叠。在

注意:这是一个近似的方法,因为始终不存在完美的解决方案。特别是在不相交的集合或子集的情况下,这些异常变得明显。然而,它试图在任何情况下找到最好的解决方案。在

###入门

安装

直接从源代码-在本地计算机上克隆此存储库,打开shell,导航到此目录并运行: ` python setup.py install ` 或通过pip: ` pip install venndata `

文件

用法

从导入模块开始。 `python from venndata import venn import pandas as pd import numpy as np import matplotlib.pyplot as plt `

为输入创建一个虚拟的数据帧- `python df = pd.DataFrame(np.random.choice([0,1], size = (50000, 5)),columns=list('ABCDE')) ` 这个数据帧的每一列都应该代表一个集合, 每列中的值表示相应 设置。例如,如果特定行看起来像: ` A B C D E 1 0 0 1 0 ` 表示该行对应的观测值属于集合A&D(值=1),而不属于B、C或E(值=0)

计算集合之间的交点。fineTune通常应设置为False,因为它在大多数情况下都会产生良好的结果。如果结果显示不正确,请使用fineTune=True,它在平均机器上运行数分钟。 `python fineTune=False labels, radii, actualOverlaps, disjointOverlaps = venn.df2areas(df, fineTune=fineTune) `

如果最后一步中计算的数据是直接可用的,代码也可以从这里开始。描述如下:

labels:集合的名称/标签为list(例如`['A', 'B', 'C', 'D', 'E']`

radii:表示set=sqrt(setsize/PI)as list的圆的半径(例如`[89.1151690252529, 88.99721848412602, 89.32744386164458, 89.03297757367739, 89.38265957850528]`

actualloverlaps:所有两组交叉口大小的字典(例如,“11000”表示A和B的交集) `{'11000': 12306, '10100': 12507, '10010': 12385, '10001': 12593, '01100': 12425, '01010': 12519, '01001': 12471, '00110': 12421, '00101': 12554, '00011': 12460}`

不相交重叠:所有相互不相交的交集大小的字典(例如“11000”仅表示A和B的交集 =A int B int(不是C)int(不是D)int(不是E))。这不是必需的,如果fineTune,它可以是空的dict{} 设置为False。 `{'10101': 1656, '01100': 1622, '10000': 1605, '00001': 1605, '01010': 1603, '10111': 1600, '01011': 1597, '01110': 1596, '00101': 1593, '11011': 1587, '11001': 1587, '10001': 1587, '10100': 1582, '00100': 1566, '10110': 1566, '00010': 1559, '11010': 1557, '01101': 1553, '11100': 1552, '01111': 1551, '00110': 1540, '00111': 1540, '00000': 1539, '11111': 1538, '01001': 1535, '00011': 1532, '10010': 1532, '11101': 1523, '01000': 1520, '10011': 1515, '11110': 1490, '11000': 1472}`

最后我们准备好绘制维恩图了。 `python # Plot the Venn diagrams fig, ax = venn.venn(radii, actualOverlaps, disjointOverlaps, labels=labels, labelsize='auto', cmap=None, fineTune=fineTune) plt.savefig('venn.png', dpi=300, transparent=True) plt.close() ` <;img src=“https://github.com/mandalsubhajit/venndata/blob/master/venn.png”width=“400”>

##引用vennda

如果您在科学出版物(或其他任何地方,如果您愿意)中使用该库,请使用指向GitHub存储库(https://github.com/mandalsubhajit/venndata)的链接。谢谢您!在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官