在动画线

时间:2017-10-15 15:02:41

标签: python animation matplotlib save

目标:使用图表w.r.t上的垂直线移动到计时器来保存绘制的图形(x,y)。

我已经构建了一个简单的图形,其移动的垂直进度线与此example基本相同,但我现在需要保存它。我不需要按功能重新定位进度条,只是让进度条沿着数据移动。我不知道在哪里调用save函数,因为这段代码不依赖于FuncAnimation。

import sys
import matplotlib.pyplot as plt
import time
import numpy

fig = plt.figure()
ax = fig.add_subplot(111)

max_height = 100
n_pts = 100
y1 = [0, max_height]
x1 = [0, 0]
y = numpy.random.randn(n_pts) * max_height
x = numpy.arange(0, n_pts)

# draw the data
line1, = ax.plot(x, y, color='black')

# fix the limits of the plot
ax.set_ylim(0, max_height)
ax.set_xlim(0, n_pts)

# draw the plot so that we can capture the background and then use blitting
plt.show(block=False)

# get the canvas object
canvas = ax.figure.canvas
background = canvas.copy_from_bbox(ax.bbox)

# add the progress line.
# XXX consider using axvline
line, = ax.plot(x1, y1, color='r', animated=True) 

starttime=time.time()
mytimer=0
mytimer_ref=0

def update(canvas, line, ax):
    # revert the canvas to the state before any progress line was drawn
    canvas.restore_region(background)

    # compute the distance that the progress line has made (based on running time) 
    t = time.time() - starttime
    mytimer = t + mytimer_ref
    x1 = [mytimer,mytimer]
    # update the progress line with its new position
    line.set_xdata(x1)
    # draw the line, and blit the axes
    ax.draw_artist(line)
    canvas.blit(ax.bbox)

timer=fig.canvas.new_timer(interval=100)
args=[canvas,line,ax]
timer.add_callback(update,*args) # every 100ms it calls update function
timer.start()
plt.show()

0 个答案:

没有答案