Tengo un script de python que se lee en un archivo de datos y muestra una figura con cuatro gráficos utilizando la biblioteca matplotlib. El archivo de datos se actualiza cada pocos segundos, ya que es un archivo de salida para una pieza de software diferente que se ejecuta simultáneamente. Me gustaría que las cuatro representaciones de mi figura matplotlib se actualicen utilizando el archivo de datos actualizado cada 20 segundos. La forma en que he implementado este es el siguiente:¿Cómo puedo actualizar dinámicamente mi figura de matplotlib a medida que cambia el archivo de datos?
import pylab as pl
import time
pl.ion()
fig = pl.figure()
while True:
f = open('data.out', 'rb')
#code to parse data and plot four charts
ax = fig.add_subplot(2,2,1)
#...
ax = fig.add_subplot(2,2,4)
#...
pl.draw()
time.sleep(20)
Esto funciona, pero perder la funcionalidad de los botones de zoom y desplazamiento que normalmente funciona si pl.show() se llama. Esto no es óptimo Sin embargo, si pl.show() se sustituye por pl.draw(), el script ya no actualiza los gráficos. ¿Hay alguna forma de actualizar dinámicamente una gráfica sin perder completamente la funcionalidad de zoom/pan?