4

データを繰り返しプロットするために matplotlib を使用する wxPython アプリケーションがあります。コードは次のようになります。

import matplotlib
matplotlib.use('WXAgg')
from matplotlib.figure import Figure
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigCanvas, \
NavigationToolbar2WxAgg as NavigationToolbar

self.fig = Figure((4,5), dpi = 100, facecolor = "white")
self.canvas = FigCanvas(self.panel, -1, self.fig)
self.toolbar = NavigationToolbar(self.canvas)
self.axes = self.fig.add_subplot(111)

何かをプロットしたいときはいつでも、 x と y を設定して次のようにします:

self.axes.plot(x,y, color = self.colours[i], label = text)
self.canvas.draw()

ご覧のとおり、NavigationToolBar がキャンバスにバインドされています。新しいグラフをプロットしたいときは、次のように呼び出します。

self.axes.clear()
self.axes.plot(x,y, color = self.colours[i], label = text)
self.canvas.draw()

ここで問題が発生します。プロットを視覚化するときにツールバーのツール (ズーム、ステップ、パンなど) を使用すると、後で新しいグラフをプロットしたときにツールバーの「履歴」がリセットされません。この新しいグラフでツールバーを使用しようとすると、(「ホーム」または「ステップ」をクリックしたときに) ツールバーが使用するビューは、古いプロットのビューになります。

私はmatplotlibが初めてで、おそらく何か間違ったことをしているでしょう。誰でもこれで私を助けることができますか? よろしくお願いします。文法の間違いがあれば申し訳ありません。英語は私の母国語ではありません。

4

2 に答える 2

6

あなたは試すことができます:

self.toolbar._views.clear()
self.toolbar._positions.clear()
self.toolbar._update_view() # maybe you don't need this

これは文書化されておらず、ライブラリの内部に手を伸ばして突っついているということを強調しておく必要があります。そのため、現在機能していても、将来も機能するという保証はありません (または、機能しなくなるという警告が表示されます)。 )。

(Wx バージョンの親クラス) がmatplotlib/backend_bases.pyどのように機能するかについては、コードを参照してください。NavigationToolbar2

于 2013-04-18T18:54:48.710 に答える