一个Matplotlib图循环,它绘制并等待raw_input

时间:2016-06-20 18:43:23

标签: python python-2.7 matplotlib

我有一个循环脚本绘制(matplotlib),然后在绘图后等待raw_input继续之前。这样我就可以在循环继续之前删除任何我不想要/不需要的数字。

我尝试了几种不同的方法,但在继续之前似乎没有正确显示数字。

# test1
x = [1, 2, 3]
plt.ion() # turn on interactive mode
for loop in range(0,3):
    y = np.dot(x, loop)
    plt.figure()
    plt.plot(x,y)
    plt.show()
    _ = raw_input("Press [enter] to continue.")

^这个绘制了图形窗口,但在循环结束之前没有显示任何内容

#test2
x = [1, 2, 3]
plt.ion() # turn on interactive mode
for loop in range(0,3):
    y = np.dot(x, loop)
    plt.figure()
    plt.plot(x,y)
    plt.pause(0.02)
    plt.show()
    _ = raw_input("Press [enter] to continue.")

^这个图很好地绘制了数字然后冻结了,当raw_input打开时,图形窗口崩溃​​了。一旦完整循环完成,窗口将再次恢复正常(可用和可缩放)

我已查看了plt.show(block=False)命令,但没有取得任何进展

有什么想法吗?

N.b。这个问题与问题here非常相似,但正如您从上面的示例中看到的那样,我还没有设法使用这些答案(建议plt.ion()和{{1} }}

2 个答案:

答案 0 :(得分:0)

您几乎已经发现,plt.pause(interval)确实有效,因为根据documentation

如果有活动图形,它将在更新之前显示并显示 暂停,GUI事件循环(如果有)将在暂停期间运行。

因此,如果您将暂停间隔延长至以下时间:

interval = 10 # units of seconds
plt.pause(interval)
plt.show()
input("Press Enter to continue...")
  • 您可以在该间隔内与图进行交互。
  • 暂停结束并等待输入后,您将无法再 与剧情互动。
  • 该图可能崩溃了,因为您在之后与图进行了交互 程序等待raw_input()时的暂停,由 方式已在Python 3.x中更改为input(),可能也有帮助 防止图形窗口崩溃​​。

答案 1 :(得分:0)

您可以尝试的另一件事是这样的...在这里您确实可以暂停,但是您可以根据需要中断它们:)

import matplotlib.pyplot as plt
# This gives a total of 30 seconds pause.. which can be interrupted
n_pauses = 3
pause_interval = 10

plt.plot(your_array)
for _ in range(n_pauses):
    try:
        plt.pause(pause_interval)
    except KeyboardInterrupt:
        break

x = input('Enter your input...')