一尘不染

在同一轴上重新绘制数据时,如何重置NavigatonToolbar“历史记录”?

python

我有一个使用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的新手,可能做错了什么。谁能帮我这个忙吗?在此先感谢您,并感谢您的语法错误,英语不是我的母语。


阅读 143

收藏
2021-01-20

共1个答案

一尘不染

您可以尝试:

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

我要强调的是,这是未记录的,您正在进入并查看图书馆的内部信息,因此无法保证它现在就可以使用,将来也可以使用(否则您将得到警告,它将停止工作。 )。

在看看代码matplotlib/backend_bases.py的如何NavigationToolbar2(父类的蜡质版本)的作品。

2021-01-20