绘制一个具有动画效果的图表,具体要求如下:
(1) 绘制一条正弦曲线;
(2) 绘制一个红色圆点,该圆点最初位于正弦曲线的左端;
(3) 制作一个圆点沿曲线运动的动画,并时刻显示圆点的坐标位置。
完整代码如下;
#导入库 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation #设置中字体 plt.rcParams["font.sans-serif"] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False #创建画布和坐标系 fig = plt.figure(tight_layout=True) #绘制正弦曲线 x = np.linspace(0, 2 * np.pi, 100) y = np.sin(x) line = ax.plot(x, y) #圆点 point, = ax.plot([], [], "ro") #动画 text = ax.text(x=4, y=0.8, s='', fontdict={'fontsize': 15}) #定义一个函数,用于更新绘制的图中的数据点。 def animate(i): point.set_data([x[i]], [y[i]]) text.set_text(f'x={text_x},y={text_y}') # 显示圆点的位置 return point, text def init(): line.set_ydata(np.sin(x)) return line, #开始制作动图 ani = animation.FuncAnimation(fig=fig, func=animate, frames=len(x), init_func=init, interval=100, blit=False)# blit选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显示 plt.show()
函数 FuncAnimation(fig,func,frames,init_func,interval,blit) 是绘制动图的主要函数,其参数如下:
fig 绘制动图的画布名称。
func自定义动画函数,即下边程序定义的函数update
frames动画长度,一次循环包含的帧数,在函数运行时,其值会传递给函数update(n)的形参“n”
init_func自定义开始帧,即传入刚定义的函数init,初始化函数
interval更新频率,以ms计算
blit选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显示。