Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用matplotlib和python从pick事件获取子批_Python_Matplotlib - Fatal编程技术网

使用matplotlib和python从pick事件获取子批

使用matplotlib和python从pick事件获取子批,python,matplotlib,Python,Matplotlib,我有一个图,有四个子图,其中两个子图绑定在一个pick事件上,方法是执行canvas.mpl\u connect('pick\u event',onpick),其中onpick是onpick(event)处理程序 现在,根据点击进入的两个suplot中的哪一个,我必须激活不同的行为(即,如果拾取来自第一个子地块,则执行此操作,如果拾取来自第二个suplot,则执行此操作),但我不知道如何执行。 有人能帮我吗?这里有一个简短的例子: import matplotlib.pyplot as plt

我有一个图,有四个子图,其中两个子图绑定在一个pick事件上,方法是执行
canvas.mpl\u connect('pick\u event',onpick)
,其中onpick是onpick(event)处理程序

现在,根据点击进入的两个suplot中的哪一个,我必须激活不同的行为(即,如果拾取来自第一个子地块,则执行此操作,如果拾取来自第二个suplot,则执行此操作),但我不知道如何执行。
有人能帮我吗?

这里有一个简短的例子:

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\u picker(True)
!如果不这样做,即使在画布上设置了事件,也不会发生任何事情


为了进一步阅读,这里是matplotlib网站上的和。

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