用法
包提供四个主要功能:venn2,
venn2_circles、venn3和venn3_circles。
函数venn2和venn2_circles只接受它们
必需参数子集大小的3元素列表(Ab, aB, AB),
例如:venn2(subsets = (3, 2, 1))
并画出一个两个圆的区域区域文氏图。在
特定的例子,对应于子集A and
not B的区域在面积上比区域大三倍,
对应于子集A and B。或者,你可以简单地
请提供两个set或Counter(即多个集合)对象的列表(0.7版中的新对象)。
例如:venn2([set(['A', 'B', 'C', 'D']), set(['D', 'E', 'F'])])
类似地,函数venn3和venn3_circles采用
子集大小(Abc, aBc, ABc, abC, AbC, aBC,
ABC)的7元素列表,并绘制一个三圆区域加权venn
图表。或者,您可以提供三个set或Counter对象的列表
(而不是计算所有7个子集的大小)。
函数venn2_circles和venn3_circles只绘制
圆,而函数venn2和venn3则绘制
图表作为彩色补丁的集合,用文本注释
标签。此外(版本0.7+),函数venn2_unweighted和
venn3_unweighted绘制不带区域权重的维恩图。
注意,对于三圆维恩图,它不是一般的
可能实现所需集合之间的精确对应
但是在大多数情况下,图片仍然是
提供一个像样的指示。
函数venn2_circles和venn3_circles返回可以进一步优化的matplotlib.patch.Circle对象列表
你喜欢的。函数venn2和venn3返回类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()