python graph matplotlib wxpython

python - ¿Cómo restablecer el "historial" de NavigatonToolbar al volver a trazar los datos en el mismo eje?



graph matplotlib (1)

Tengo una aplicación wxPython que usa matplotlib para trazar datos repetidamente. El código se ve así:

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)

Cada vez que quiero trazar algo, simplemente configuro xey y hago:

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

Como puede ver, tengo una NavigationToolBar vinculada al lienzo. Cuando quiero trazar un nuevo gráfico, llamo:

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

Aquí viene el problema: si utilizo las herramientas de la barra de herramientas (zoom, pasos, panorámica, etc.) cuando estoy visualizando un gráfico, el "histórico" de la barra de herramientas no se reiniciará cuando trace un nuevo gráfico más adelante. Si trato de utilizar la barra de herramientas en este nuevo gráfico, las vistas que usará la barra de herramientas (cuando hago clic en "inicio" o cualquier "paso") serán las vistas de la trama anterior.

Soy un poco nuevo en matplotlib y probablemente estoy haciendo algo mal. ¿Puede alguien ayudarme con esto? Gracias de antemano, y perdón por cualquier error de gramática, el inglés no es mi lengua materna.


Puede intentar:

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

Debo enfatizar que esto no está documentado y que está metiendo la mano y hurgando en las entrañas de la biblioteca, por lo que no hay garantía de que si funciona ahora, funcionará en el futuro (o recibirá una advertencia de que dejará de funcionar). )

Eche un vistazo al código en matplotlib/backend_bases.py de cómo funciona NavigationToolbar2 (la clase padre de la versión Wx).