【问题标题】:How i can pick(select) venn diagram area我如何选择(选择)维恩图区域
【发布时间】:2016-05-25 22:53:49
【问题描述】:

是否可以在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()

【问题讨论】:

    标签: python-3.x matplotlib venn-diagram matplotlib-venn


    【解决方案1】:

    Matplotlib 确实支持 some degree of event handling 以及绘图组件的“选择”事件(无论是维恩图还是任何其他类型的绘图)。

    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(如果您只需要三个圆圈),但不要同时使用。

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 2017-02-01
      相关资源
      最近更新 更多