我有一个使用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的新手,可能做错了什么。谁能帮我这个忙吗?在此先感谢您,并感谢您的语法错误,英语不是我的母语。
您可以尝试:
self.toolbar._views.clear() self.toolbar._positions.clear() self.toolbar._update_view() # maybe you don't need this
我要强调的是,这是未记录的,您正在进入并查看图书馆的内部信息,因此无法保证它现在就可以使用,将来也可以使用(否则您将得到警告,它将停止工作。 )。
在看看代码matplotlib/backend_bases.py的如何NavigationToolbar2(父类的蜡质版本)的作品。
matplotlib/backend_bases.py
NavigationToolbar2