无法在python 3.5

时间:2017-05-04 09:06:11

标签: python matplotlib tensorflow

想要使用以下代码片段来动态演示预测(<<<<<<<<<<<<<<<<<<<<<<<<",<<<<<<",<<"",&#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)

提前致谢!

3 个答案:

答案 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的魔术命令可以实现这一目的,并弹出一个弹出的窗口。 但只是想知道这是否是唯一的方式......任何其他方式没有任何额外的窗口弹出?