2016-10-03 11 views
3

python/matplotlibの最新のアップデートが、コード実行中にmatplotlibプロットを定期的に更新または "更新"する重要な機能を壊していることが判明しました。以下は、最小(非)動作例です。コード実行中にmatplotlibプロットを更新する

import numpy as np 
from matplotlib.pyplot import * 
from time import sleep 

x = np.array([0]) 
y = np.array([0]) 

figure() 
for i in range(51): 
    gca().cla() 
    plot(x,y) 
    xlim([0,50]) 
    ylim([0,2500]) 
    draw() 
    show(block = False) 
    x = np.append(x,[x[-1]+1]) 
    y = np.append(y,[x[-1]**2]) 
    sleep(0.01) 

私は、Python 3.4.3と1.4.3 matplotlibの使用して、このプログラムを実行すると、私はプロットが継続的に更新見たり、プログラムが実行されるような曲線が成長します。しかし、matplotlib 1.5.3でPython 3.5.1を使用すると、matplotlibウィンドウは開きますが、プロットは表示されません。代わりに、ウィンドウが「応答していません」と表示され、コードの実行が終了すると最終的なプロットが表示されます。

私はこれについて何ができますか?最新のリリースを使用したい機能を実現するための方法はありますか?

注:違いがある場合は、デフォルトのIDLE環境から実行しています。

+0

インポートの間にこの行を試してみましたか? '%matplotlib inline'? – estebanpdl

+0

@estebanpdlコマンドは、コマンドウィンドウ内にプロットを表示させるためにipythonで使うことを意図しているようです。私はそれが私が探しているものだとは思わない。 – zephyr

答えて

0

これは興味深いです。私は、少し違ったインタラクティブなプロットを描画するために使用しています:これはmatplotlibの1.5で同じ問題を示している場合

import numpy as np 
import matplotlib.pyplot as plt 
from time import sleep 

x = np.array([0]) 
y = np.array([0]) 

plt.ion() 
fig = plt.figure() 
ax=fig.add_subplot(111) 
ax.set_xlim([0,50]) 
ax.set_ylim([0,2500]) 
line, = ax.plot(x,y) 
plt.show() 
for i in range(51): 
    x = np.append(x,[x[-1]+1]) 
    y = np.append(y,[x[-1]**2]) 
    line.set_data(x,y) 
    plt.draw() 
    sleep(0.01) 

は、あなた(または誰でも)をチェックすることはできますか?

+0

はい、それは1.4でも私にとってはうまくいくでしょう。私が最後に持っている 'show'は厳密には必要ではなく、本当に必要な' draw'コマンドだけですが、何かを傷つけることはないので、そこに残しておきます。他の唯一の違いは 'イオン 'です。私が見つけたのは本当に助けには何もしません。 – zephyr

+0

Matplotlib 1.5で作業しているのですか? – ImportanceOfBeingErnest

関連する問題