Sto tracciando i dati in un grafico usando wxPython dove i limiti di dati sull'asse y stanno cambiando con i dati. Mi piacerebbe cambiare l'asse in modo dinamico senza ridisegnare l'intera tela come canvas.draw()
piuttosto mi piacerebbe usare blitting
per questo come faccio per la trama stessa.Il grafico animato matplotlib non aggiorna le etichette sull'asse usando il blando
Quello che ho avuto modo di lavorare è il cambiamento dell'asse y, e ho gli ytick animati con la trama, purtroppo gli ylabel sono spariti e non riesco a trovare la soluzione. Il motivo sta impostando l'impostazione get_yaxis().set_animated(True)
per l'asse.
Ho messo insieme un piccolo esempio di lavoro nel seguito. Cosa mi manca qui?
import matplotlib
matplotlib.use('WXAgg')
import wx
import pylab as p
import numpy as npy
from time import sleep
ax = p.subplot(111)
canvas = ax.figure.canvas
x = npy.arange(0,2*npy.pi,0.01)
line, = p.plot(x, npy.sin(x), animated=True)
ax.get_yaxis().set_animated(True)
def update_line(*args):
if update_line.background is None:
update_line.background = canvas.copy_from_bbox(ax.bbox)
for i in range(20):
canvas.restore_region(update_line.background)
line.set_ydata((i/10.0)*npy.sin(x))
ax.set_ylim(-1*i/5.0-0.5,i/5.0+0.5)
ax.draw_artist(ax.get_yaxis())
ax.draw_artist(line)
canvas.blit(ax.bbox)
sleep(0.1)
print 'end'
update_line.cnt = 0
update_line.background = None
wx.EVT_IDLE(wx.GetApp(), update_line)
p.show()
Fondamentalmente sto cercando qualcosa di simile get_ylabels().set_animated(True)
ma non posso trovare esso.
Grazie per aver risposto a questo, in effetti questo ha funzionato anche per me, è fantastico! – Merlin
Questo è stato molto utile! Grazie per aver inviato questa risposta. L'animazione di yaxis e tick-labels divenne improvvisamente chiara. – achennu
So che questo è un thread vecchio, ma 'ax.clipbox' mi dà None, quindi questo fallisce. Qualche idea? –