在审核了这个问题(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对x的图,然后是一个包含sin的图(x )和sin(x + pi)vs x。
但相反,我得到前两个情节和一个只有罪(x)的情节和只有罪(x + pi)的情节。
如何获得我想要的所有数据到图2?当我回到循环的开头时,设置图重置似乎是某种问题。
答案 0 :(得分:1)
这个最小的改变可能会做你想要的(尽管它不是最好的代码)。
将plt.figure(1)
替换为plt.figure()
。从循环内删除任何plt.show()
。
循环结束,然后显示所有3个数字。 e^x
曲线将在图#1和#3中。