在matplotlib中绘制面积比例双向和三向venn图的函数。

matplotlib-venn的Python项目详细描述


https://travis-ci.org/konstantint/matplotlib-venn.png?branch=master

绘制面积加权二、三圆文氏图的程序。

安装

安装包的最简单方法是通过easy_installpip

$ easy_install matplotlib-venn

依赖关系

  • numpy
  • scipy
  • matplotlib

用法

包提供四个主要功能:venn2venn2_circlesvenn3venn3_circles

函数venn2venn2_circles只接受它们 必需参数子集大小的3元素列表(Ab, aB, AB), 例如:

venn2(subsets = (3, 2, 1))

并画出一个两个圆的区域区域文氏图。在 特定的例子,对应于子集A and not B的区域在面积上比区域大三倍, 对应于子集A and B。或者,你可以简单地 请提供两个setCounter(即多个集合)对象的列表(0.7版中的新对象)。 例如:

venn2([set(['A', 'B', 'C', 'D']), set(['D', 'E', 'F'])])

类似地,函数venn3venn3_circles采用 子集大小(Abc, aBc, ABc, abC, AbC, aBC, ABC)的7元素列表,并绘制一个三圆区域加权venn 图表。或者,您可以提供三个setCounter对象的列表 (而不是计算所有7个子集的大小)。

函数venn2_circlesvenn3_circles只绘制 圆,而函数venn2venn3则绘制 图表作为彩色补丁的集合,用文本注释 标签。此外(版本0.7+),函数venn2_unweightedvenn3_unweighted绘制不带区域权重的维恩图。

注意,对于三圆维恩图,它不是一般的 可能实现所需集合之间的精确对应 但是在大多数情况下,图片仍然是 提供一个像样的指示。

函数venn2_circlesvenn3_circles返回可以进一步优化的matplotlib.patch.Circle对象列表 你喜欢的。函数venn2venn3返回类VennDiagram的对象, 它允许访问组成修补程序、文本元素和 版本0.7)关于中心和半径的信息 圈子。

基本示例:

from matplotlib_venn import venn2
venn2(subsets = (3, 2, 1))

对于三个圆的情况:

from matplotlib_venn import venn3
venn3(subsets = (1, 1, 1, 2, 1, 2, 2), set_labels = ('Set1', 'Set2', 'Set3'))

更详细的示例:

from matplotlib import pyplot as plt
import numpy as np
from matplotlib_venn import venn3, venn3_circles
plt.figure(figsize=(4,4))
v = venn3(subsets=(1, 1, 1, 1, 1, 1, 1), set_labels = ('A', 'B', 'C'))
v.get_patch_by_id('100').set_alpha(1.0)
v.get_patch_by_id('100').set_color('white')
v.get_label_by_id('100').set_text('Unknown')
v.get_label_by_id('A').set_text('Set "A"')
c = venn3_circles(subsets=(1, 1, 1, 1, 1, 1, 1), linestyle='dashed')
c[0].set_lw(1.0)
c[0].set_ls('dotted')
plt.title("Sample Venn diagram")
plt.annotate('Unknown set', xy=v.get_label_by_id('100').get_position() - np.array([0, 0.05]), xytext=(-70,-70),
             ha='center', textcoords='offset points', bbox=dict(boxstyle='round,pad=0.5', fc='gray', alpha=0.1),
             arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0.5',color='gray'))
plt.show()

具有多个子块的示例(0.6版中的新功能):

from matplotlib_venn import venn2, venn2_circles
figure, axes = plt.subplots(2, 2)
venn2(subsets={'10': 1, '01': 1, '11': 1}, set_labels = ('A', 'B'), ax=axes[0][0])
venn2_circles((1, 2, 3), ax=axes[0][1])
venn3(subsets=(1, 1, 1, 1, 1, 1, 1), set_labels = ('A', 'B', 'C'), ax=axes[1][0])
venn3_circles({'001': 10, '100': 20, '010': 21, '110': 13, '011': 14}, ax=axes[1][1])
plt.show()

也许最常见的用例是生成给定的venn图 三组对象:

set1 = set(['A', 'B', 'C', 'D'])
set2 = set(['B', 'C', 'D', 'E'])
set3 = set(['C', 'D',' E', 'F', 'G'])

venn3([set1, set2, set3], ('Set1', 'Set2', 'Set3'))
plt.show()

问题

另请参见

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

推荐PyPI第三方库


热门话题
graph Java自己生成类图   java MouseMotionListener:鼠标和触控板给出不同的结果   java解析清单条目的正确方法是什么。jar中的mf文件?   java如何创建带有半透明色块的透明gif/png图像?   java应用内计费V3:跨设备同步购买   java Spring数据JPA注入失败BeanCreationException:无法自动连接字段   Java数据结构维护插入顺序和重复值   java无法在VSCode中设置JavaFX   java中数据字段初始化的类顺序   java如何使用ClientBuilder为Rest Post Api多部分编写集成测试   JUnit测试divide()方法的java正确方法   java将消息标记为接收前已读   Java ArrayList调用扩展对象函数   java Android:只使用GCM的TCP/IPServer   Java如何将xls数据转换为txt文件   编译为Jar文件后未找到java类   java返回子字符串的所有匹配项   java Get json用户_timeline api twitter 1.1