我在图中分散了几个数据系列,希望能够为它们切换注释。问题是,有时会触发两个选择事件(当用户点击注释和点内的点时)。 “注释”选择事件会清除注释,但“点”选择事件会将其放回原位,因此效果是切换不起作用。
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()
如何分隔注释和点选事件并告诉它不要注释点是否已经有注释?我已经在使用标签来决定选择哪个分散系列。
非常感谢。
答案 0 :(得分:2)
您可以在每个散点之前为每个散点创建一个注释,并将所有散点设置为不可见。单击散点图将切换相应注释的可见性。点击注释就不会做任何事情。
URL/rest/api/content/