我使用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()
我要做的是将计数(在本例中为3000,3和5)移动到颜色与图中颜色匹配的图例。我不确定如何使用matplotlib_venn。
答案 0 :(得分:3)
您可以用空字符串替换维恩图的标签,而是根据维特的补丁和相应的计数创建一个图例,如下所示:
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()