0

matplotlib の図が埋め込まれた PyQt4 アプリケーションがあります。ここに画像の説明を入力

ご覧のとおり、ナビゲーション ツールバーをウィジェットとして追加しました。左のプロットに表示されたデータに基づいて、右のプロットを更新できるようにしたいと考えています。最も簡単な方法は、「ズーム」を行うものに含まれる情報をハイジャックすることです。または、少なくともズームがいつ発生したかを知っているので、右側で再計算して再描画できます。誰もこれに良いアプローチを持っていますか (pick_event レベルからの再実装は最後の手段です)?

4

1 に答える 1

1

私が思いついた最善の方法は、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)
于 2012-04-12T19:05:40.833 に答える