我正在使用wxPython在绘图中绘制数据,其中y轴的数据限制随着数据而改变。我想动态更改坐标轴,而不必像
我已经让y轴改变工作了,并且我可以通过绘图使yticks动画化,但不幸的是ylables消失了,我找不到解决方法。原因是将
我在下面提供了一个小的工作示例。我错过了什么?
canvas.draw()
一样重新绘制整个画布,而是要像绘制图形本身一样使用blitting
。我已经让y轴改变工作了,并且我可以通过绘图使yticks动画化,但不幸的是ylables消失了,我找不到解决方法。原因是将
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)
的东西,但我找不到。
ax.clipbox
给了我 None,所以这个失败了。有什么想法吗? - Florian Mayer