2017-01-27 8 views
-3

グラデーションディケントを使って線形回帰を使って線にフィッティングしています。各繰り返しで、線は最も近づくように近づきます。Matplotlib - 傾きと切片の変化として線の変化をアニメーション化するには

今すぐ最終行を表示します。しかし、反復の進展に伴って、データがどのようにしてよりよくフィットするかを説明したいと思います。

私はいくつかのサンプルを見ましたが、新しいx、yポイントを既存のラインに追加するだけのようです。各繰り返しで、私は古い行を削除し、最新のデータで新しい行を描きたい。

アイデア?

+0

あなたはプロット内のすべてのデータを置き換えることができます - でも例はmatplotlibのページにあります:http://matplotlib.org/1.5.1/examples/animation/simple_anim.html – furas

+0

の例では、どのように上の[ありmatplotlibの 'FuncAnimation'](http://matplotlib.org/1.4.1/examples/animation/animate_decay.html)を使用してください。ラインに新しい値を1つ追加するか、各繰り返しステップでラインに新しい値をすべて追加することに違いはありません。したがって、この例はあなたのケースでは完全に有効です。あなたが特定の問題を抱えている場合は、コードや詳細な説明がなくてもあなたを助けることは不可能なので、[MCVE]を提供してください。 – ImportanceOfBeingErnest

+0

ありがとうございました。私は私の誤りを見る。私は、言及された例のフラスから始めましたが、彼らがアニメートで行っていたことを誤解していました() – JerryKur

答えて

1

上記のヒントを使用して、Jupiter Notebookでフィッティングをアニメーション化する方法を示したサンプルコードを作成しました。固定データとアニメーションデータの両方を持っています。

%matplotlib notebook 
# A simple example of an animated plot 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 

fig, ax = plt.subplots() 

# Initial plot 
x = np.arange(0., 10., 0.2) 
y = np.arange(0., 10., 0.2) 
line, = ax.plot(x, y) 

plt.rcParams["figure.figsize"] = (10,8) 
plt.ylabel("Price") 
plt.xlabel("Size (sq.ft)") 
plt.plot([1, 1.2, 3], [3, 3.5, 4.7], 'go', label='Training data') 
#ax.plot(test_house_size, test_house_price, 'mo', label='Testing data') 

def animate(i): 
    print(i)  
    x = np.arange(0., 6, 0.05) 
    line.set_xdata(x) # update the data 
    line.set_ydata(x ** (1 + (i/10.0))) # update the data 

    return line, 


# Init only required for blitting to give a clean slate. 
def init(): 
    line.set_ydata(y) 
    return line, 

ani = animation.FuncAnimation(fig, animate, frames=np.arange(1, 10), init_func=init, interval=1000, blit=True) 
plt.show() 
関連する問題