带图例的Matplotlib-Venn图

带图例的Matplotlib-Venn图,matplotlib,matplotlib-venn,Matplotlib,Matplotlib Venn,我正在使用matplotlib-venn包在python中绘制venn图。这个软件包可以很好地绘制两个或三个集合的维恩图。然而,当其中一个集合比其他集合大得多时,较小圆圈中的计数可能会接近或重叠。这里有一个例子 from collections import Counter import matplotlib.pyplot as plt from matplotlib_venn import venn2, venn3 sets = Counter() sets['01'] = 3000 set

我正在使用matplotlib-venn包在python中绘制venn图。这个软件包可以很好地绘制两个或三个集合的维恩图。然而,当其中一个集合比其他集合大得多时,较小圆圈中的计数可能会接近或重叠。这里有一个例子

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()


我想做的是将计数(在本例中为3000、3和5)移动到一个图例中,该图例的颜色与图表中的颜色匹配。不确定如何使用matplotlib_-venn执行此操作。

您可以用空字符串替换venn图表的标签,并根据venn的补丁和相应计数创建图例,如下所示:

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()