【发布时间】:2018-02-08 00:00:11
【问题描述】:
在查看了这个问题 (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) 与 x 的图,第二次是 e^x 与 x 的图,然后是一个带有 sin(x ) 和 sin(x+pi) 与 x。
但是我得到了前两个图和一个只有 sin(x) 的图和一个只有 sin(x+pi) 的图。
如何获得我想要的所有数据到图 2?当我返回循环的开头时,设置的数字重置似乎是某种问题。
【问题讨论】:
-
不要在每次调用
plt.plot()之后再调用plt.show(),而应在您对plt.plot()进行所有调用之后再调用一次。 -
您是否介意在您的问题中提供带有真实代码的minimal reproducible example,以便人们能够理解和重现您在做什么?还要清楚地说明所需的输出。 “图 1 的情节”不是很容易理解。而是说您希望哪些数据出现在哪个图上。
-
@cmaher 为了澄清我对我所写内容的理解(这可能是不正确的):第一次通过循环我绘制并显示图 1,然后绘制,但不显示图 2。下一个通过循环,我再次绘制并显示带有新数据的图 1,并将另一组数据绘制到图 2,但不绘制。然后在离开循环后,我尝试显示图 2。对我来说,这似乎是在我绘制完所有数据之后才调用 plt.show()。
-
@ImportanceOfBeingErnest 我将相应地编辑代码和问题。
-
@ImportanceOfBeingErnest 这足够充实吗?我相信这是可以验证的,并且似乎涵盖了我的问题的症结。
标签: python matplotlib plot figure