ここ数日、Numpyとmatplotlibを使っています。実行をブロックせずにmatplotlibを関数にプロットしようとすると問題が発生します。SOには同様の質問をするスレッドがすでにたくさんあることを知っています。かなりググってみましたが、うまくいきませんでした。
一部の人が示唆するように、show(block = False)を使用してみましたが、取得できるのはフリーズしたウィンドウだけです。単にshow()を呼び出すと、結果は正しくプロットされますが、ウィンドウが閉じられるまで実行はブロックされます。私が読んだ他のスレッドから、show(block = False)が機能するかどうかはバックエンドに依存していると思います。これは正しいです?私のバックエンドはQt4Aggです。私のコードを見て、何かおかしいと思ったら教えてください。これが私のコードです。助けてくれてありがとう。
from math import *
from matplotlib import pyplot as plt
print plt.get_backend()
def main():
x = range(-50, 51, 1)
for pow in range(1,5): # plot x^1, x^2, ..., x^4
y = [Xi**pow for Xi in x]
print y
plt.plot(x, y)
plt.draw()
#plt.show() #this plots correctly, but blocks execution.
plt.show(block=False) #this creates an empty frozen window.
_ = raw_input("Press [enter] to continue.")
if __name__ == '__main__':
main()
PS。新しいウィンドウを作成するのではなく、何かをプロットするたびに既存のウィンドウを更新することを忘れていました。
matplotlib
。
plt.ion()
以前にmatplotlibインタラクティブモードを試しましたplt.show()
か?その後、各プロットが子スレッドに生成されるので、それは非ブロッキングになるはずです。