2016-05-21 52 views
0

是否可以通過點擊python選擇或選擇維恩圖區域?我如何挑選(選擇)維恩圖區域

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以及用於一個情節的組件「選擇」事件(它是否是一個維恩圖或任何其他類型的圖)。

venn3函數返回的維恩圖對象包含一個字段patches,其中列出了組成該圖的所有對象PathPatch。你可以讓那些「揀選」任何其他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(如果你只需要三個圓圈),但不是兩者。