matplotlib を使用して実験をリアルタイムで監視し、while ループでプロットを生成しています。理想的には、ループはKeyboardInterrupt
. これは、Ubuntu テストでは十分に機能します。Windows 7 では、 を使用ipython
して終了し"Terminate batch job (Y/N)?"
、インタープリターを閉じます。この動作を回避し、KeyboardInterrupt の後にインタープリターを開いたままにしたいと思います。ここにテストスクリプトがあります。
[EDIT 2]: このスクリプトipython
は、 としてロードされている場合、Windows で正常に動作しますipython --pylab
。
import time
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot([0], [0], 'b-o')
window = 50
plot_data = np.zeros((window, 2))
i = 0
start = time.time()
while True:
try:
data = [time.time() - start, np.random.rand()]
print ' '.join('{:.2f}'.format(x) for x in data)
if i < window:
plot_data[i,:] = data
line.set_data(plot_data[0:i+1,0], plot_data[0:i+1,1])
else:
plot_data[0:window-1] = plot_data[1:window]
plot_data[window-1] = data
line.set_data(plot_data[:,0], plot_data[:,1])
ax.relim()
ax.autoscale_view(True,True,True)
fig.canvas.draw()
plt.pause(0.1)
i += 1
except KeyboardInterrupt:
print "Program ended by user.\n"
break
print 'Success!'
[編集 1]: これに matplotlib のタグを付けた理由をもっと明確にする必要があります。以下のスクリプト例は、どちらのオペレーティング システムでも問題なく実行されます。
i = 0
start = time.time()
while True:
try:
data = [time.time() - start, np.random.rand()]
print ' '.join('{:.2f}'.format(x) for x in data)
time.sleep(0.1)
except KeyboardInterrupt:
print "Proram ended by user. \n"
break
print 'Success!'
のクリーン インストールの一環として、すべてのパッケージが昨日インストールされましたEnthought
。