Python 2个拾取事件2个颜色条
我有2个色条,我希望它们都有不同的pickevents 我该怎么做? 我的代码是自动取款机Python 2个拾取事件2个颜色条,python,matplotlib,wxpython,Python,Matplotlib,Wxpython,我有2个色条,我希望它们都有不同的pickevents 我该怎么做? 我的代码是自动取款机 x_ax.set_picker(5)##colorbar set picker def on_pick(event): artist = event.artist val = event.mouseevent.ydata xal = event.mouseevent.xdata if highlight == 1 : print 'hello'
x_ax.set_picker(5)##colorbar set picker
def on_pick(event):
artist = event.artist
val = event.mouseevent.ydata
xal = event.mouseevent.xdata
if highlight == 1 :
print 'hello'
global highlight
highlight = 0
self.canvas.draw()
if highlight == 0 :
highlight = 2
trans = transforms.blended_transform_factory(self.ax.transAxes,self.ax.transData )
rect = patches.Rectangle((0,1),width=5, height=5, transform=trans, color='yellow',alpha=0.5)
self.ax.add_patch(rect)
self.canvas.draw()
rect.remove()
else:
self.canvas.draw()
trans = transforms.blended_transform_factory(self.ax.transAxes,self.ax.transData )
rect = patches.Rectangle((0,10),width=25, height=25, transform=trans, color='yellow',alpha=0.5)
self.ax.add_patch(rect)
highlight = 1
self.canvas.draw()
rect.remove()
self.canvas = FigureCanvas(self, -1, self.fig)
self.canvas.mpl_connect('pick_event',on_pick)
我尝试添加x2_ax.setpicker(5)
和self.canvas.mpl.connect('pick_event',on_click)
但当你点击任意一个颜色条时,这两个功能似乎都起作用
我的on_pick只是高亮显示图形上的一个部分
如何为每个颜色条添加单独的拾取事件???您正在将拾取事件连接到
画布
,并且每个画布
只能获得一个拾取事件。你需要在你的上添加代码,这样你就可以知道你在和哪个艺术家打交道了。您可以使用闭包来实现这一点,一种稍微简单/不太优雅的方法是只需在轴上添加一个标签
x_ax.set_label('x')
y_ax.set_label('y')
然后在你的中选择
def on_pick(event):
#some code here
art = event.artist
if isinstance(art, matplotlib.axes.Axes):
# the artist is as axes
if art.get_label() == 'x':
# do one thing
pass
elif art.get_label() == 'y':
# do another thing
pass
通过制作一个由标签和函数设置键的dict
,可以做得稍微好一点,特别是如果你最终拥有许多标签艺术家的话