2017-05-14 21 views
1

私のpythonに新しいですし、ちょうどインストールpyCharmと、次の質問に与えられた試験例を実行しようとした:How to update a plot in matplotlib? IDE(PyCharm)で使用する場合matplotlibのプロットを更新しません

この例では、アニメーション化するプロットを更新移動サイン信号。再プロットする代わりに、プロットオブジェクトのデータを更新します。 これはコマンドラインで動作しますが、FigureはPyCharmで動作しても表示されません。スクリプトの最後にplt.show(block=True)を追加すると数字が表示されますが、今回は更新されません。

アイデア?

答えて

1

リンクされた質問の更新は、プロットがtkinterアプリケーションに埋め込まれていることを前提としていますが、ここでは該当しません。

プロットをスタンドアロンウィンドウとして更新するには、対話モードをオンにする必要があります。つまり、plt.ion()です。 PyCharmではこれはデフォルトでオンになっています。

Figureを対話モードで表示するには、描画する必要があります(plt.draw())。応答性を保つために、一時停止を追加する必要があります(plt.pause(0.02))。ループが終了した後も開いたままにしたい場合は、対話モードをオフにして数字を表示する必要があります。

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, 6*np.pi, 100) 
y = np.sin(x) 

plt.ion() 

fig = plt.figure() 
ax = fig.add_subplot(111) 
line1, = ax.plot(x, y, 'r-') 
plt.draw() 

for phase in np.linspace(0, 10*np.pi, 500): 
    line1.set_ydata(np.sin(x + phase)) 
    plt.draw() 
    plt.pause(0.02) 

plt.ioff() 
plt.show() 
+0

ありがとう、私はそれを得た! – hko

1

a separate questionImportanceOfBeingErnestで述べたように、いくつかのシステムでは、OPの例からのコードの先頭に次の2行を追加することが不可欠である:

import matplotlib 
matplotlib.use("TkAgg") 

これはへの呼び出しをレンダリングしますplt.ionおよびplt.ioffは不要です。コードは私のシステム上で動作するようになりました。

関連する問題