python matplotlib包_Python matplotlib-venn包_程序模块 - PyPI - Python中文网

本文介绍如何使用Matplotlib库中的venn图模块来绘制两圆和三圆的Venn图,包括基本示例、高级定制选项以及如何通过提供集合对象来生成Venn图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用法

包提供四个主要功能: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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值