桃花长相依
兄弟, 你的需求不是很明确, 我不确定能不能帮到你, 这是我之前在matplotlib官网看到的Demo:import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationdef data_gen(t=0):
cnt = 0
while cnt < 1000:
cnt += 1
t += 0.1
yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)def init():
ax.set_ylim(-1.1, 1.1)
ax.set_xlim(0, 10) del xdata[:] del ydata[:]
line.set_data(xdata, ydata) return line,
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.grid()
xdata, ydata = [], []def run(data):
# update the data
t, y = data
xdata.append(t)
ydata.append(y)
xmin, xmax = ax.get_xlim() if t >= xmax:
ax.set_xlim(xmin, 2*xmax)
ax.figure.canvas.draw()
line.set_data(xdata, ydata) return line,
ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=10,
repeat=False, init_func=init)
plt.show()data_gen()这个函数, 用来生成具有数据的数据源, 改代码的话, 可以在此处改为你的数据源, 在此代码中该函数最终返回了一个生成器, 不一定非要用生成器, iterable(list, tuple等可迭代对象)、int或者None都行代码中用了yield关键字, 具体参考:这位大佬的文章init()这个函数, 是用于绘制清晰帧的函数, 用于初始化run()这个函数, 是绘制每一帧所调用的函数animation.FuncAnimation类的参数是:class matplotlib.animation.FuncAnimation(fig,func,frames = None,init_func = None,fargs = None,save_count = None,** kwargs )interval的意思是帧之间的延迟(以毫秒为单位),默认为200repeat的意思是控制在帧序列完成时是否应重复动画, 默认为True具体可以参考matplotlib.animation的官方文档:https://matplotlib.org/api/_a...