想要使用以下代码片段来动态演示预测(<<<<<<<<<<<<<<<<<<<<<<<<",<<<<<<",<<"",&#1)然而,只有<< 1出现并且完全看不到<< 2出现。有什么想法解决它吗?
.....
# plot the real data
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data, y_data) <<<< 1
plt.ion()
plt.show()
for i in range(1001):
sess.run(train_step, feed_dict={xs:x_data, ys:y_data})
if i % 50 == 0:
print(sess.run(loss,feed_dict={xs:x_data, ys:y_data}))
try:
ax.lines.remove(lines[0])
except Exception: # if plotting the first time
pass
prediction_value = sess.run(prediction, feed_dict={xs:x_data})
lines = ax.plot(x_data,prediction_value,'r-', lw = 5) <<< 2
plt.pause(0.1)
提前致谢!
答案 0 :(得分:1)
plt.show()
在继续之前等待您关闭绘图窗口。如果您删除它,但仍然保留plt.ion()
并且您的平台支持它,它应该运行良好:
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(0, 0, 'o')
for i in range(1,10):
ax.plot(i, i, 'o')
plt.pause(1)
适用于matplotlib 2.0.0,Mac上的Python 3.5(每秒绘制一个点)
答案 1 :(得分:0)
您需要在脚本末尾调用plt.show()
。否则它会阻止其他所有内容,因为绘图窗口会接管事件循环。
为了显示图形,请在交互模式下使用plt.draw()
。
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data, y_data)
plt.ion()
plt.draw()
for i in range(1001):
...
lines = ax.plot(x_data,prediction_value,'r-', lw = 5)
plt.draw()
plt.pause(0.1)
plt.ioff()
plt.show()
答案 2 :(得分:0)
添加%matplotlib的魔术命令可以实现这一目的,并弹出一个弹出的窗口。 但只是想知道这是否是唯一的方式......任何其他方式没有任何额外的窗口弹出?