Matplotlib - 如何将线的变化设置为斜率和截距变化

时间:2017-01-27 19:22:16

标签: python animation matplotlib

我使用梯度下降使用线性回归将值拟合到一条线。在每次迭代中,线越来越接近最佳拟合。

现在我只显示最后一行。但我想说明随着迭代的进展,这条线如何更好地适应数据。

我查看了一些示例,但它们似乎只是在现有行中添加新的x,y点。每次迭代我想删除旧行,并用最新数据绘制一个新行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用上面提供的提示,我创建了这个示例代码,向我展示了如何在Jupyter 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()