2016-05-21 2 views
0

Можно ли выбрать области диаграммы Венна, щелкнув в python?Как я могу выбрать область диаграммы venn

from matplotlib import pyplot as plt 
import numpy as np 
from matplotlib_venn import venn3, venn3_circles 
plt.figure(figsize=(4,4)) 
v = venn3(subsets=(1, 2, 3, 4, 5, 6, 7), set_labels = ('A', 'B', 'C')) 
c = venn3_circles(subsets=(1, 2, 3, 4, 5, 6, 7), linestyle='dashed') 
plt.title("Sample Venn diagram") 
plt.show() 

ответ

0

Matplotlib делает поддержку some degree of event handling, а также «подцепить» события для компонентов сюжета (будь это диаграмма Венна или любой другой тип графика).

Объект диаграммы Venn, возвращаемый функцией venn3, содержит поле patches, в котором перечислены все объекты PathPatch, которые содержат диаграмму. Вы можете сделать эти «pickable», как и любым другими объекты Matplotlib патча:

from matplotlib import pyplot as plt 
import numpy as np 
from matplotlib_venn import venn3 

# Create the diagram 
plt.figure(figsize=(4,4)) 
v = venn3(subsets=(1, 2, 3, 4, 5, 6, 7), set_labels = ('A', 'B', 'C')) 
plt.title("Sample Venn diagram") 

# Make all patches of the diagram pickable 
for p in v.patches: 
    if p is not None: p.set_picker(True) 

# This is the event handler 
def on_pick(event): 
    p = event.artist 
    ec = p.get_edgecolor() 
    p.set_edgecolor('black' if ec[-1] == 0.0 else 'none') 
    plt.gcf().canvas.draw() # Redraw plot 

# Connect event handler 
plt.gcf().canvas.mpl_connect('pick_event', on_pick) 

# Show the plot 
plt.show() 

venn3_circles функция возвращает список из трех Circle пластырей, которые нарисованы на «правильный» сегментированные диаграммы. Вы также можете сделать их подбираемыми, но тогда вам нужно будет как-то разобраться с «выбором конфликтов». Следовательно, в общем, я бы предложил использовать либо venn3 (если вам нужны 7 цветных патчей), либо venn3_circles (если вам нужны только три круга), но не оба.

Смежные вопросы