多次挑选事件干扰

时间:2017-03-28 12:00:28

标签: python matplotlib

我在图中分散了几个数据系列,希望能够为它们切换注释。问题是,有时会触发两个选择事件(当用户点击注释和点内的点时)。 “注释”选择事件会清除注释,但“点”选择事件会将其放回原位,因此效果是切换不起作用。

df = pd.DataFrame({'a': np.random.rand(25)*1000,
                   'b': np.random.rand(25)*1000,
                   'c': np.random.rand(25)})

def handlepick(event):
    artist = event.artist
    if isinstance(artist, matplotlib.text.Annotation):
        artist.set_visible(not artist.get_visible())
    else:
        x = event.mouseevent.xdata
        y = event.mouseevent.ydata
        if artist.get_label() == 'a':
            ann = matplotlib.text.Annotation('blue', xy=(x,y), picker=5)
        else: # label == 'b'
            ann = matplotlib.text.Annotation('red', xy=(x,y), picker=5)
        plt.gca().add_artist(ann)

plt.figure()
plt.scatter(data=df, x='a', y='c', c='blue', s='a', alpha=0.5, picker=5, label='a')
plt.scatter(data=df, x='b', y='c', c='red', s='b', alpha=0.5, picker=5, label='b')
plt.gcf().canvas.mpl_connect('pick_event', handlepick)
plt.show()

如何分隔注释和点选事件并告诉它不要注释点是否已经有注释?我已经在使用标签来决定选择哪个分散系列。

非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以在每个散点之前为每个散点创建一个注释,并将所有散点设置为不可见。单击散点图将切换相应注释的可见性。点击注释就不会做任何事情。

URL/rest/api/content/