在以前的代码版本中,我清除了绘图并重新绘制了数据,直到最近计算的数据点。为了加快绘图速度,我试图切换到使用set_data
,所以我没有清除每一步。不幸的是,我无法使用此更改生成一条线。
下面您可以看到我尝试使用set_data
来绘制顶部图,但我保留了原始方法来绘制底部图。
请让我知道如何解决这个问题。
import matplotlib.pyplot as plt
import numpy as np
plt.close("all")
frames = 200
x = np.linspace(0, 4*np.pi, frames)
y1 = np.sin(x)
y2 = np.cos(x)
fig, (ax1, ax2) = plt.subplots(2, 1)
line1, = ax1.plot([], [])
line2, = ax2.plot([], [])
ax1.set_xlim(x.min()*1.1, x.max()*1.1)
ax1.set_ylim(y1.min()*1.1, y1.max()*1.1)
def animate(i):
line1.set_data(x[i], y1[i])
ax2.cla()
ax2.plot(x[:i], y2[:i])
ax2.set_xlim(x.min()*1.1, x.max()*1.1)
ax2.set_ylim(y2.min()*1.1, y2.max()*1.1)
plt.pause(0.01)
for i in range(20*frames):
animate(i%frames)
字符串
1条答案
按热度按时间wyyhbhjk1#
我在这个问题上的错误是一个非常基本的错误,并且是基于对
set_data
函数的误解。我认为我需要传入一个新的数据点,但实际上你需要传入整个数据集,但要更新点。因此,代码最终看起来如下:
字符串
而且,正如@Lutz Lehmann在评论中建议的那样,我可以使用
FuncAnimation
很容易地做到这一点,如下所示。型