在Python Matplotlib中的while循环中生成的数字“无响应”

时间:2015-02-17 17:46:28

标签: python loops matplotlib figure

是否可以在循环中生成并显示多个数字?我想显示每个图,以便我可以检查它,然后继续下一个。为了使这个问题更清楚,我写了一个我想做的小例子。目前,数字显示为“没有响应”,所以我看不到它们中的什么。我尝试过使用plt.waitforbuttonpress和plt.ion,但这似乎没有用。

我正在使用spyder编辑器,但如果解决方案也适用于其他编辑器(如空闲),那就太棒了。

import numpy as np
import matplotlib.pyplot as plt

pi = 3.14
figureTime = 1.0

x  = np.arange(0,2*pi,0.1)
y1 = np.sin(x)
y2 = np.cos(x)

plt.ion()

for i in xrange(1,11,1):

  plt.close('all')    

  # Figure 1
  plt.figure()
  plt.plot(x,y1*i)
  plt.show()
  plt.draw()
  plt.waitforbuttonpress(timeout=figureTime)
  raw_input("Press Enter to continue")
  plt.close()


  # Figure 2
  plt.figure()
  plt.plot(x,y2*i)
  plt.show()
  plt.draw()
  plt.waitforbuttonpress(timeout=figureTime)
  raw_input("Press Enter to continue")
  plt.close()

1 个答案:

答案 0 :(得分:2)

好吧解决了。以下代码适用于spyder和idle。所有你需要做的就是在循环外调用plt.ion(),并在你想暂停数字时调用plt.waitforbuttonpress()!简单!

import numpy as np
import matplotlib.pyplot as plt

import warnings
warnings.filterwarnings("ignore")

pi = 3.14

x  = np.arange(0,2*pi,0.1)
y1 = np.sin(x)
y2 = np.cos(x)

plt.ion()

for i in xrange(1,11,1):

  plt.close('all')    

  # Figure 1
  plt.figure()
  plt.plot(x,y1*i)
  plt.show()
  plt.waitforbuttonpress()

  # Figure 2
  plt.figure()
  plt.plot(x,y2*i)
  plt.show()
  plt.waitforbuttonpress()