绘制一个具有动画效果的图表,具体要求如下: (1) 绘制一条正弦曲线; (2) 绘制一个红色圆点,该圆点最初位于正弦曲线的左端; (3) 制作一个圆点沿曲线运动的动画,并时刻显示圆点的坐标位置。
时间: 2024-11-20 22:41:41 浏览: 11
Python使用matplotlib绘制动态正弦曲线图 保存为gif动图
5星 · 资源好评率100%
为了实现这个动画效果,你可以使用`matplotlib.animation`模块结合`FuncAnimation`功能。这里是一个简单的示例,展示如何满足上述要求:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
import time
# 初始化图表
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2, color='blue') # 正弦曲线
dot, = ax.plot([], [], marker='o', ms=10, color='red') # 红色圆点
# 更新函数,计算新的圆点位置并更新图表
def animate(i):
x = np.linspace(0, 2*np.pi, i + 1)
y = np.sin(x)
line.set_data(x, y) # 更新正弦曲线
dot.set_data(x[i], y[i]) # 更新圆点位置
return line, dot
# 设置起始和结束帧数
frames = range(0, 100)
ani = animation.FuncAnimation(fig, animate, frames=frames, interval=50, blit=True)
# 开始播放动画
plt.show()
# 每次循环结束后暂停片刻,模拟实时更新
for i in frames:
ani._draw_frame(i) # 手动调用绘图函数,因为FuncAnimation默认只画一次
print(f"Frame {i}, Dot Position: ({x[i]:.2f}, {y[i]:.2f})")
time.sleep(0.05) # 延迟0.05秒
# 结束动画后保持窗口打开
plt.close(ani._fig)
```
在这个代码里,我们创建了一个动态变化的正弦曲线和一个移动的红点,每50毫秒更新一次圆点的位置,并打印出当前的位置信息。
阅读全文