Можно ли отобразить диаграмму Венна в универсальном наборе? - PullRequest
0 голосов
/ 09 февраля 2019

Можно ли отобразить универсальный набор с помощью matplotlib-venn?Я новичок как в python, так и в пакете matplotlib, так что я не совсем уверен, что возможно, а что нет.

Я пытаюсь создать генератор диаграмм Венна, который принимает значения для каждого круга и затем аргумент (например, пересечение B), а затем выделяет только пересечение двух окружностей.По сути, это то, что я хочу, чтобы вывод был.

enter image description here

1 Ответ

0 голосов
/ 09 февраля 2019

Python имеет пакет matplotlib_venn , но в вашем случае он требует некоторых хитростей.

import matplotlib.pyplot as plt
from matplotlib_venn import venn3
A = set([9,3,6])
B = set([2,4,6,8])
C = set([0,5,1,7])
v = venn3([A,B,C], ('P', 'Q', 'U'))

v.get_label_by_id('100').set_text('\n'.join(map(str,A-B)))
v.get_label_by_id('110').set_text('\n'.join(map(str,A&B)))
v.get_label_by_id('010').set_text('\n'.join(map(str,B-A)))
v.get_label_by_id('001').set_text('\n'.join(map(str,C)))
v.get_patch_by_id('001').set_color('white')
plt.axis('on')
plt.show()

venn

Вы можете использовать plt.annotate для настройки положения значений

...