绘制一个动画图

学习目标:

绘制一个具有动画效果的图表,具体要求如下:
(1) 绘制一条正弦曲线
(2) 绘制一个红色圆点,该圆点最初位于正弦曲线的左端;
(3) 制作一个圆点沿曲线运动的动画,并时刻显示圆点的坐标位置。

具体代码如下:

# 1.导入模块
%matplotlib notebook 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# 2.设置中文黑体
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False


# 3.准备正弦曲线数据
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)


# 4.创建画布和坐标系
fig = plt.figure(tight_layout=True)
ax = fig.add_subplot(111)

# 5.绘制正弦曲线
ax.plot(x, y, color='b')


# 6.动画设计
#################################################
def update_points(num):
    point_ani.set_data(x[num], y[num])    
    # num代表当前动画第几帧,传参设置 x 和 y 数据。
    text_pt.set_text("x=%.3f, y=%.3f"%(x[num], y[num]))  
    # 设置文本字符串,显示到小数点后三位 
    return point_ani,text_pt

point_ani, = plt.plot(x[0], y[0], "ro")
# 在折线图坐标(0,0)处绘制折线图样式:颜色为红色,样式为圆点。
text_pt = plt.text(4, 0.8, '', fontsize=15)
# 文本框绘制在(4,0.8)的位置上,设置大小为15
ani = animation.FuncAnimation(fig, update_points, np.arange(0, 100), interval=100, blit=True)#interval表示更新动画频率

#################################################



# 7.将动画保存为gif图片(用于上传博客)
ani.save("pratice7.3.gif", writer='pillow')

# 8.展示图表
plt.show()

 

效果展示如下 

 

绘制一个正弦函数图的动画效果,可以使用Pythonmatplotlib库中的animation模块来实现。下面是一个简单的示例代码: ```python import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # 创建画布和子图 fig, ax = plt.subplots() # 定义x轴范围 x_data = np.arange(0, 2*np.pi, 0.01) # 初始时的y轴数据 y_data = np.sin(x_data) # 绘制初始图形 line, = ax.plot(x_data, y_data) # 定义更新函数 def update(frame): # 更新y轴数据 y_data = np.sin(x_data + frame) # 更新曲线 line.set_ydata(y_data) return line, # 创建动画 ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 50), interval=50, blit=True) # 显示动画 plt.show() ``` 解释一下代码: 首先,导入需要的包,包括numpy、matplotlib.pyplot和matplotlib.animation中的FuncAnimation类。 然后,创建画布和子图,定义x轴范围和初始时的y轴数据。 接着,绘制初始的正弦函数图形,其中`line, = ax.plot(x_data, y_data)`表示只取返回值中的第一个元素。 定义更新函数`update(frame)`,其中`frame`表示动画的帧数,每帧更新一次。在更新函数中,通过修改y轴数据来更新曲线,然后返回曲线对象`line`。 创建动画对象`ani`,其中`frames`参数表示动画的帧数,`interval`参数表示每个帧之间的时间间隔,`blit`参数表示是否使用双缓冲技术。 最后,调用`plt.show()`函数显示动画。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值