Mer*_*lin 9 python animation axes matplotlib
我正在使用wxPython在绘图中绘制数据,其中y轴上的数据限制随数据而变化.我想动态地改变轴而不重绘整个画布,canvas.draw()而不是像blitting我为剧情本身那样使用它.
我得到的工作是改变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()
Run Code Online (Sandbox Code Playgroud)
基本上我正在寻找类似get_ylabels().set_animated(True)但我无法找到它的东西.
小智 8
看起来像是绘制了标签,但是blit命令不会将它们复制到画布上,因为边界框仅包含轴的内部部分.
对我来说,改变update_line.background = canvas.copy_from_bbox(ax.bbox)以update_line.background = canvas.copy_from_bbox(ax.get_figure().bbox)和canvas.blit(ax.bbox)以canvas.blit(ax.clipbox)使工作.
| 归档时间: |
|
| 查看次数: |
3874 次 |
| 最近记录: |