2016-07-25 92 views
0

我有一个带有四个子图的图,其中两个绑定在挑选事件上,通过执行canvas.mpl_connect('pick_event', onpick),其中onpick是onpick(事件)处理函数。从matplotlib和python中挑选事件获取子图

现在,基于两个suplot中的哪一个进入点击,我必须激活一个不同的行为(例如,如果选择来自第一个子图,请执行此操作,否则,如果它来自第二个suplot,则执行此操作)不知道该怎么做。 任何人都可以帮助我吗?

回答

1

下面是一个简单的例子:

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)!如果您不这样做,即使您已将事件设置在画布上,也不会发生任何事情。

如需进一步阅读,请从matplotlib网站获取PickEvent documentationpick handling demo

+0

所以我搜索的判别信息是在event.artist中,谢谢。你真的解决了我的问题 –