Можно ли отобразить диаграмму Венна в универсальном наборе?

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

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

введите здесь описание изображения


person Paak-    schedule 09.02.2019    source источник


Ответы (1)


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

венн

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

person Ali Hallaji    schedule 09.02.2019