子集维恩图 - 即嵌入整套的维恩图

时间:2017-12-27 02:28:21

标签: python matplotlib venn-diagram matplotlib-venn

我正在比较一套关于在伦敦实施的适用于污染严重的车辆的新罚款的推文。我想比较有多少推文提到与流量相关的词,以及有多少提及与污染有关的词。

我正在使用维恩图来做到这一点,但理想情况下我希望重叠的圆圈都包含在代表所有推文的整个集合的大圆圈内。

这是我的意思的一个例子(对不起,不具备发布图像的声誉)

https://media1.britannica.com/eb-media/79/63279-004-ED30922B.gif

我目前正在使用matplotlib-venn。

非常感谢。

2 个答案:

答案 0 :(得分:2)

啊,所以你需要做的就是将整个集合之外的任何部分的值设置为0.请参阅此处的代码,此处改编自文档示例:

my_sets =(0,0,0,4,5,6,7)
my_labels = ["Traffic","Pollution","All Tweets"]

plt.figure(figsize=(4,4))
v = venn3(subsets= my_sets, set_labels = my_labels)
c = venn3_circles(subsets= my_sets, linestyle='dashed')
plt.show()

答案 1 :(得分:1)

一种可能性是在整个图表周围手动添加一个新的圆圈(假设它不必具有任何特定的精确度量,而只是作为宇宙的粗略指标)。例如:

from matplotlib_venn import venn3
from matplotlib import pyplot as plt
venn3((1,2,3,4,5,6,7))

from matplotlib.patches import Circle
plt.gca().add_patch(Circle([0,0], 1, fill=False, ec='k'))
plt.xlim(-1.05,1.05)
plt.ylim(-1.05,1.05)
plt.text(0.8, 0.8, 'Universe', fontsize=20)