我有一个循环脚本绘制(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} }}
答案 0 :(得分:0)
您几乎已经发现,plt.pause(interval)确实有效,因为根据documentation,
如果有活动图形,它将在更新之前显示并显示 暂停,GUI事件循环(如果有)将在暂停期间运行。
因此,如果您将暂停间隔延长至以下时间:
interval = 10 # units of seconds
plt.pause(interval)
plt.show()
input("Press Enter to continue...")
答案 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...')