三套以上维恩图绘图包
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)的链接。谢谢您!在
- 项目
标签: