Matplotlib:绘制旧图

Matplotlib: plotting on old plot

查看此问题后 (How do I tell Matplotlib to create a second (new) plot, then later plot on the old one?) 我认为我已经解决了这个问题,但我认为我 运行 遇到了 for 循环的问题。这是我正在做的事情的精简版。

import matplotlib.pyplot as plt
import numpy as np

for m in range(2):
   x=np.arange(5)
   y=np.exp(m*x)
   plt.figure(1)
   plt.plot(x, y)
   plt.show()
   ...
   z=np.sin(x+(m*math.pi))
   plt.figure(2)
   plt.plot(x,z)
   ...
plt.figure(2)
plt.show()

我希望这会显示三个图:第一次是 e^(0) vs x 的图,第二次是 e^x vs x 的图,然后是一个同时包含 sin 的图(x) 和 sin(x+pi) 与 x。

但是我得到了前两个图和一个只有 sin(x) 的图和一个只有 sin(x+pi) 的图。

如何将我想要的所有数据添加到图 2 中?当我 return 到循环开始时,设置数字重置似乎是某种问题。

这个最小的更改可能会满足您的要求(尽管它不是最好的代码)。

plt.figure(1) 替换为 plt.figure()。从循环内部删除任何 plt.show()

循环将结束,然后将显示所有 3 个数字。 e^x 曲线将在图 #1 和 #3 中。