我的程序中的特定数据点保持不变。我试图通过迭代更新来适应数据线。我想看看在更新该线路的参数时该线路如何变化(移动)。
具体来说,我正在进行梯度下降,并且试图了解每次更新如何改变线的角度和位置以最适合数据。
现在我得到了这个:
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.scatter(xs, ys)
plt.plot(xs, thetas[0] + thetas[1] * xs, color='red')
plt.show()
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我也很难绘制一条连续的线。现在我需要更新红线。有任何想法吗?thetas[0]并且thetas[1]是 for 循环中的更新,之后绘图也需要更新..
小智 5
您需要使用 matplotlib 的交互模式(请参阅文档)。
特别是,您需要使用 plt.ion() 打开交互模式,fig.canvas.draw() 使用最新的更改更新画布,并使用 ax.clear() 删除之前绘制的内容。
你的代码看起来像:
plt.ion()
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.scatter(xs, ys)
plt.plot(xs, thetas[0] + thetas[1] * xs, color='red')
# Draw.
fig.canvas.draw()
# Do your updates on thetas.
# ...
# Clear the current plot.
ax1.clear()
# Plot your data again.
ax1.scatter(xs, ys)
plt.plot(xs, thetas[0] + thetas[1] * xs, color='red')
# Update the figure.
fig.canvas.draw()
Run Code Online (Sandbox Code Playgroud)