Python实践:画个动图玩玩,Python绘制GIF图总结
Python实践:画个动图玩玩,Python绘制GIF图总结
上期博客《 》,分享了Python绘图核心方法的体系化总结。
这期分享Python动图制作,可视化绘制动态图,主要用于分析数据的动态变化规律,非常好使,开干。
具体实现
功能需求
-
输入:不同时刻的一维数据,也即二维数据 过程:绘制每张图,并存入list 输出:一张gif图
实现思路
-
得到要绘制的不同帧横纵坐标轴数据 设立好图幅:坐标系、标题、标签等 绘制每张图,并用imageio存入list中 绘制完毕,将list中的每帧img,输出成gif
Python代码
demo代码如下:
import matplotlib
matplotlib.use(Agg) # 只绘图保存,不显示图片,一定要加在import后面
import matplotlib.pyplot as plt
import numpy as np
import imageio
def generate_gif_1(data, output_path):
image_list = []
ndata = np.array(data)
row, col = ndata.shape
x = range(col)
for i in range(row):
# plot curves
# plt.figure(i)
plt.clf() # 清除上一幅图,如果不清,则图像不断叠加 clear figure
plt.cla() # 清除坐标轴 clear axis
plt.xlim(0, 12) # x_min, x_max
plt.ylim(0, 1.5) # y_min, y_max
plt.title(Val Distribu)
plt.xlabel(Time)
plt.ylabel(Val)
plt.grid(linestyle=-.)
# create gif
y = ndata[i]
plt.plot(x[:], y[:], b, lw=1)
plt.savefig(temp.png)
image_list.append(imageio.imread(temp.png))
# plt.show()
plt.pause(0.1)
plt.close()
# save gif
imageio.mimsave(output_path, image_list, GIF, duration=0.35)
if __name__ == "__main__":
row = 10
col = 20
data = np.random.rand(row, col) # 随机生成row行,col列,0-1的数据
output_path = ./demo.gif
generate_gif_1(data, output_path)
print(done!)
效果如下:
参考资料
- 【Python可视化】matplotlib画动态曲线,
- 用python做GIF动画,让你的图表动起来,
