我有一个带有四个子图的图形,其中两个子图通过执行
canvas.mpl_connect('pick_event', onpick)
绑定在拾取事件上,其中 onpick 是 onpick(event) 处理程序。
现在,根据点击进入的两个子图中的哪一个,我必须激活不同的行为(即,如果选择来自第一个子图,则执行此操作,否则,如果来自第二个子图,则执行此操作),但我不知道如何去做吧。 有人可以帮助我吗?
这是一个简短的例子:
import matplotlib.pyplot as plt
from random import random
def onpick(event):
if event.artist == plt1:
print("Picked on top plot")
elif event.artist == plt2:
print("Picked on bottom plot")
first = [random()*i for i in range(10)]
second = [random()*i for i in range(10)]
fig = plt.figure(1)
plt1 = plt.subplot(211)
plt.plot(range(10), first)
plt2 = plt.subplot(212)
plt.plot(range(10), second)
plt1.set_picker(True)
plt2.set_picker(True)
fig.canvas.mpl_connect('pick_event', onpick)
plt.show()
请注意,您必须在应该触发此事件的子图上调用
set_picker(True)
!如果不这样做,即使您在画布上设置了事件,也不会发生任何事情。
PickEvent
文档 和 pick 处理演示。