2017-05-30 157 views
1

私はmatlpotlibライブラリからpyplotに苦労しています。私はプロットを作成しようとすると、図は、すでにフリーズ:pyplotプロットがフリーズする(応答しない)

plt.figure() 
plt.ion() 
ax1 = plt.subplot(211) #Here it freezes 
plt.title('test', fontsize=8) 
plt.xlim(-1700, 1700) 
plt.ylabel('x-axis') 
plt.xlabel('y-axis') 
plt.grid() 
plt.show() 
...do something else 

私は唯一のPyQtプロットで働いているが、プロットは自分のコードを停止した場合、私はマルチスレッド化せずに私の問題を解決したいと思い、この時間は、私は気にしないので、短い間、問題は、スクリプトが停止せずに実行され続け、図が完全に作成されるまで待たないということです。 (time.sleep()は役に立ちません)。スレッドのないソリューションはありますか?

乾杯、 ジェームズ

Psの:私はコードの後に​​ブレークポイントを追加し、デバッグモードで実行する場合は、問題はない(明らかに)ありません。

+0

?スクリプトがうまく動く(つまり、プロットが作成され、すぐに閉じられ、「何か他のことを実行する」という意味で)これを実行することは明らかに難しいです。バージョン、バックエンド、正確な実行手順(または実行元のIDE)などの詳細を追加する必要があります。 – ImportanceOfBeingErnest

+0

私はPython 2.7でPycharm 2016.2.3を使用しています。私は正直なところ、バックエンドの意味を知らないのです。私の問題を強調するために、私は "do sth else"をtime.sleep(5)に変更します。プロットは5秒後に表示されます。私のコードでも同じことが起こります。次の測定ループがメインスレッドをブロックするため、pyplotはプロットを完成させることができません。私はプロットの何らかのフィードバックを探しているので、プロットが作成されたときにだけスクリプトが続行されます。 –

答えて

0

これは1つの機能ですか? plt.clfを使用して

import matplotlib.pyplot as plt 

plt.figure() 
plt.ion() 
ax1 = plt.subplot(211) #Here it freezes 
plt.title('test', fontsize=8) 
plt.xlim(-1700, 1700) 
plt.ylabel('x-axis') 
plt.xlabel('y-axis') 
plt.grid() 
plt.draw() # draw the plot 
plt.pause(5) # show it for 5 seconds 
print("Hallo") # continue doing other stuff 
+0

はい、そうです。後にtime.sleep(5)を追加すると、プロットはタイムアウトになります。しかし、私は私のコード全体をプロットし続けるかどうか、私はマルチスレッドに変更する必要があると思います...それ以外の場合は、私が誤ってそれをクリックすると、常にクラッシュします。 –

0

はプロットが完了した後に姿をクローズするための簡単なアドオンです。これを()を実行するにはどうすればよい

import matplotlib.pyplot as plt 

plt.figure() 
plt.ion() 
ax1 = plt.subplot(211) 
plt.title('test', fontsize=8) 
plt.xlim(-1700, 1700) 
plt.ylabel('x-axis') 
plt.xlabel('y-axis') 
plt.grid() 
plt.show() 
plt.clf() # Here is another path 
関連する問題