gpt4 book ai didi

带图例的 Matplotlib 维恩图

转载 作者:行者123 更新时间:2023-12-01 11:19:08 25 4
gpt4 key购买 nike

我正在使用 matplotlib-venn 包在 python 中绘制维恩图。这个包非常适合用两套或三套绘制维恩图。然而,当其中一组比其他组大得多时,较小圆圈中的计数可能会接近或重叠。这是一个例子。

from collections import Counter
import matplotlib.pyplot as plt
from matplotlib_venn import venn2, venn3

sets = Counter()
sets['01'] = 3000
sets['11'] = 3
sets['10'] = 5
setLabels = ['set1', 'set2']

plt.figure()
ax = plt.gca()
v = venn2(subsets = sets, set_labels = setLabels, ax = ax)
plt.title('Venn Diagram')
plt.show()

enter image description here

我要做的是将计数(在本例中为 3000、3 和 5)移动到图例中,其颜色与图中的颜色相匹配。不确定如何使用 matplotlib_venn 执行此操作。

最佳答案

您可以用空字符串替换维恩图的标签,而是从维恩图 block 和相应计数创建图例,如下所示:

from collections import Counter
import matplotlib.pyplot as plt
from matplotlib_venn import venn2, venn3

sets = Counter()
sets['01'] = 3000
sets['11'] = 3
sets['10'] = 5
setLabels = ['set1', 'set2']

plt.figure()
ax = plt.gca()
v = venn2(subsets = sets, set_labels = setLabels, ax = ax)

h, l = [],[]
for i in sets:
# remove label by setting them to empty string:
v.get_label_by_id(i).set_text("")
# append patch to handles list
h.append(v.get_patch_by_id(i))
# append count to labels list
l.append(sets[i])

#create legend from handles and labels
ax.legend(handles=h, labels=l, title="counts")

plt.title('Venn Diagram')
plt.show()

enter image description here

关于带图例的 Matplotlib 维恩图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46224235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com