我正在使用wxPython在y軸上的數據限制隨數據更改而繪製的圖中繪製數據。我想動態地改變軸,而不用重新繪製整個畫布,如canvas.draw()
,而是我想用blitting
來做這件事,就像我爲情節本身做的那樣。matplotlib動畫圖不會更新軸上的標籤使用blit
我開始工作的是變化的y軸,我得到了yticks與情節動畫,不幸的是ylabels已經消失了,我找不到解決方案。原因是設置軸的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 2012-05-23 15:26:38
這非常有幫助!感謝您提交此答案。動畫yaxis和刻度標籤突然變得清晰。 – achennu 2013-04-13 15:06:38
我知道這是一箇舊的線程,但'ax.clipbox'給我None,所以這個失敗。有任何想法嗎? – 2013-08-22 17:35:15