我想使用Python 3制作维恩图以显示分类数据。
如果我愿意,说

  Rosy = ["chocolate", "chips", "cake", "sweets"]
  Steven = ["chocolate", "crisps", "nuggets"]

  venn2([set(Rosy), set(Steven)])
  plt.show()


然后我得到一个带有the number of entries corresponding to each segment的图,但我想要的是the actual entries in each segment(即薯片,仅Rosy钻头中的蛋糕甜食,交叉路口中的巧克力以及Steven钻头中的薯片和金块)。使用matplotlib_venn有什么办法吗?

最佳答案

我发现的最好方法是这样的:

set1 = set(['A', 'B', 'C', 'D'])
set2 = set(['B', 'C', 'D', 'E'])

v = venn2([set1, set2], ('Set1', 'Set2'))
v.get_label_by_id('10').set_text('\n A')
v.get_label_by_id('01').set_text('\n E')
v.get_label_by_id('11').set_text('\n \nB \nC \nD')
plt.show()


只需创建一些函数,即可从set1和set2即时为set_text生成文本,即可完成。
python - 使用分类数据创建维恩图-matplotlib_venn-LMLPHP

09-25 19:59