jupyter中利用matplotlib绘制动态图
原理:每次更新数据时,清除上一次的图片,并生成新的图片,以此达到(伪)动态图的效果。至于如何保存为真动态图,我是用录屏+生成GIF的方式获取动态图的,一般的视频播放软件都带这两个功能,比较麻烦(曲线救国),GIF不一定特别清晰,毕竟是视频转为GIF。
from IPython import display
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
x = list(np.linspace(0,6,50))
y = np.sin(x)
for i in range(len(x)):
plt.cla() # 清除图片
plt.xlim((0, 6))
plt.ylim((-1.1, 1.1))
xx = x[:i]
yy = y[:i]
plt.plot(xx, yy, color='black') # 绘制曲线
plt.scatter(x[i-1], y[i-1], color='red', s=20) # 绘制最新点
plt.title('sin(x)')
display.clear_output(wait=True)
plt.pause(0.00000001)
plt.show()
这个方法有有点好处就是,可以在图形中添加很多其他的图,比如我需要在折线图中添加散点图,或者多条折线图同时变化。
类似的有个很棒的画动态图的方法,是使用plotly.express来画图,缺点是不能把多种图形画在一起,比如我有一条折线图,我想要在折线图上标记多个点,plotly.express就做不到(可能是我不会,反正研究了大半天,有知道的大佬可以告诉我下),后面要是有时间的话,可能会做个plotly.express的初步教程。