Я рисую данные на графике с использованием wxPython, где данные с положением y изменяются с данными. Я хотел бы изменить ось динамически, не перерисовывая весь холст, как canvas.draw()
, но я хотел бы использовать blitting
для этого, как и для самого сюжета.matplotlib анимированный сюжет не обновляет метки на оси с использованием blit
То, что я получил, это изменение оси y, и я получаю yticks, анимированные сюжетом, к сожалению, ярлыки исчезли, и я не могу найти решение. Причиной является установка установки get_yaxis().set_animated(True)
для оси.
В следующем примере я приведу небольшой рабочий пример. Что мне здесь не хватает?
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()
В основном я ищу что-то вроде get_ylabels().set_animated(True)
, но я не могу найти его.
Спасибо, что ответили на это, действительно, это сработало и для меня, это здорово! – Merlin
Было очень полезно! Спасибо, что представили этот ответ. Анимированные ярлыки и тик-метки внезапно стали ясными. – achennu
Я знаю, что это старый поток, но 'ax.clipbox' дает мне None, так что это не удается. Есть идеи? –