Matplotlib.animation:绘图后显示点?

时间:2014-01-02 11:26:42

标签: python matplotlib

我正在阅读Jake Vanderplas的优秀代码,用于绘制沿正弦曲线移动的点:

"""
This short code snippet utilizes the new animation package in
matplotlib 1.1.0; it's the shortest snippet that I know of that can
produce an animated plot in python. I'm still hoping that the
animate package's syntax can be simplified further. 
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def simData():
# this function is called as the argument for
# the simPoints function. This function contains
# (or defines) and iterator---a device that computes
# a value, passes it back to the main program, and then
# returns to exactly where it left off in the function upon the
# next call. I believe that one has to use this method to animate
# a function using the matplotlib animation package.
#
    t_max = 10.0
    dt = 0.05
    x = 0.0
    t = 0.0
    while t < t_max:
        x = np.sin(np.pi*t)
        t = t + dt
        yield x, t

def simPoints(simData):
    x, t = simData[0], simData[1]
    time_text.set_text(time_template%(t))
    line.set_data(t, x)
    return line, time_text

##
##   set up figure for plotting:
##
fig = plt.figure()
ax = fig.add_subplot(111)
# I'm still unfamiliar with the following line of code:
line, = ax.plot([], [], 'bo', ms=10)
ax.set_ylim(-1, 1)
ax.set_xlim(0, 10)
##
time_template = 'Time = %.1f s'    # prints running simulation time
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)
## Now call the animation package: (simData is the user function
## serving as the argument for simPoints):
ani = animation.FuncAnimation(fig, simPoints, simData, blit=False,\
     interval=10, repeat=True)
plt.show()

如何修改此代码,以便绘制后每个点(即x,y的计算值)都会保留在数字上?因此,在动画结束时,您会看到所有先前的点形成正弦曲线。

1 个答案:

答案 0 :(得分:0)

请查看此链接以获取解释:

# I'm still unfamiliar with the following line of code:
line, = ax.plot([], [], 'bo', ms=10)

Python code. Is it comma operator?


此外,这可能对您的图形问题没有帮助,但似乎您确定了time_template,但之后没有使用该定义,除非在脚本中的该点之后全局调用它。