2016-05-21 21 views
0

Ist es möglich, Venn Diagrammbereiche auszuwählen oder auszuwählen, indem Sie auf Python klicken?Wie kann ich Venn Diagrammbereich auswählen (auswählen)

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

Antwort

0

Matplotlib tun Unterstützung some degree of event handling sowie „Pick“ Ereignisse für Komponenten von einem Grundstück (ob es ein Venn-Diagramm ist, oder jede andere Art von Handlung).

Das von der Funktion venn3 zurückgegebene Venn-Diagrammobjekt enthält ein Feld , in dem alle PathPatch Objekte aufgeführt sind, aus denen das Diagramm besteht. Sie können diese „aufsammelbare“ wie alle anderen Matplotlib Patch Objekte machen:

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

Die venn3_circles Funktion gibt eine Liste von drei Circle Patches, die auf dem „richtig segmentiert“ Diagramm gezeichnet werden. Sie können sie auch auswählbar machen, aber dann müssen Sie irgendwie mit "Pick-Konflikten" umgehen. Daher würde ich im Allgemeinen vorschlagen, dass Sie entweder venn3 (wenn Sie 7 farbige Patches benötigen) oder venn3_circles (wenn Sie nur die drei Kreise benötigen), aber nicht beide verwenden.