我有一个 PyQt4 应用程序,其中嵌入了 matplotlib 图形。
如您所见,我已将导航工具栏添加为小部件。我希望能够根据左侧图上显示的数据更新右侧的图。似乎最简单的方法是劫持“缩放”中包含的信息。或者至少知道何时发生缩放,以便我可以重新计算并在右侧重绘。任何人都有一个好的方法(从pick_event级别重新实现将是最后的手段)?
我有一个 PyQt4 应用程序,其中嵌入了 matplotlib 图形。
如您所见,我已将导航工具栏添加为小部件。我希望能够根据左侧图上显示的数据更新右侧的图。似乎最简单的方法是劫持“缩放”中包含的信息。或者至少知道何时发生缩放,以便我可以重新计算并在右侧重绘。任何人都有一个好的方法(从pick_event级别重新实现将是最后的手段)?
我想出的最好方法是创建一个以 NavigationToolbar 作为父级的自定义导航工具栏。然后我只是在自定义版本中添加了一个信号并覆盖了 draw 方法。通过这种方式,我可以调用原始的 draw 方法并使用 NavigationToolbar 数据结构中所需的任何信息发出信号。
class NavigationToolbarCustom(NavigationToolbar):
zoom_changed = pyqtSignal(float, float, name='zoomChanged')
def __init__(self, canvas, parent):
NavigationToolbar.__init__(self, canvas, parent)
#super(NavigationToolbarCustom, self).__init__(self, canvas, parent)
def draw(self):
super(NavigationToolbarCustom,self).draw()
if self._xypress == None:
home_view = self._views.home()
Xmin,Xmax = home_view[0][0:2]
else:
lastx, lasty, a, ind, lim, trans = self._xypress[0]
Xmin,Xmax=a.get_xlim()
self.zoom_changed.emit(Xmin,Xmax)