web-dev-qa-db-ja.com

キーボード入力でpython図を閉じる方法は?

pythonプログラムを作成しようとしています。このプログラムは、図形を無期限に表示し、キーボードのキーが押された後に閉じます。

実際、pythonプログラムは、次のMatlabコードと同じように動作するはずです。

_t = 0:0.01:2;
s = sin(2 * pi * t);

plot(t,s)

pause
close
_

pythonで図をプロットすることはできますが、キーボード入力後に何も起こりません。

_import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)

#plt.ion()
fig = plt.figure()
plt.plot(t,s)
#plt.show()
plt.draw()

raw_input("PRESS ANY KEY TO CONTINUE.")
plt.close(fig)
_

これまでのところ、plt.close(fig)plt.show()と組み合わせて何もしないことを観察しました。ただし、代わりにplt.draw()を使用すると、plt.close(fig)が図を閉じます。それでも、プログラムにraw_input("PRESS ANY KEY TO CONTINUE.")を追加すると、図はまったく表示されません。

私は何が間違っているのですか?

また、plt.ion()を試してみましたが、成功しませんでした。

17
Boris L.

このようなものかもしれませんか?

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)


fig = plt.figure()
plt.plot(t,s)
#plt.show()
plt.draw()
plt.pause(1) # <-------
raw_input("<Hit Enter To Close>")
plt.close(fig)
7
Joran Beasley

plt.waitforbuttonpress(0)を使用すると、raw_input()を使用するトリックを解決できると思います。

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)

fig = plt.figure()
plt.plot(t,s)
plt.draw()
plt.waitforbuttonpress(0) # this will wait for indefinite time
plt.close(fig)
14