python数组plot_Python Matplotlib:动态更新plot-数组长度未知

我知道这些问题:(A),(B)和(C)-所有这些都解决了我的部分问题。

我也读过Animations Cookbook

然而,我的问题似乎没有在上述任何一项中得到解决。

我希望在优化器运行时绘制优化器返回的目标函数。我不知道优化器将运行多少次迭代。独立于如何获得包含目标函数的数组,这个问题可以在这个最小的示例中隔离:import numpy as np

import matplotlib.pyplot as plt

SIZE = 50

R1 = 0.5

R2 = 0.75

plt.ion()

fig = plt.figure()

ax = fig.add_subplot(111)

fig.canvas.set_window_title('broken spiral')

for i in range(0, SIZE):

A.append(R1 * i * np.sin(i))

B.append(R2 * i * np.cos(i))

line1, = ax.plot(A,'-k',label='black')

line2, = ax.plot(B,'-r',label='red')

legend = ax.legend(loc=0)

plt.draw()

plt.savefig('test_broken_spiral.png')

这里的绘图只是“伪”更新的。真正发生的是,每次迭代都会生成一个新的A和B行,与原始行重叠,但也会生成一个新的图例项。经过50次迭代,我有100行和100个图例项。

接下来我试了一下:for i in range(0, SIZE):

A.append(R1 * i * np.sin(i))

B.append(R2 * i * np.cos(i))

if i == 0:

line1, = ax.plot(A,'-k',label='black')

line2, = ax.plot(B,'-r',label='red')

legend = ax.legend(loc=0)

plt.draw()

else:

line1.set_ydata(A)

line2.set_ydata(B)

plt.draw()

plt.savefig('test_broken_spiral.png')

不幸的是,这个情节把轴心完全弄乱了。

我把if i == 0语句放进去,因为我不知道预先迭代的次数(是的,在本例中我知道,但在这个目标应用程序中不知道),并且以某种方式必须“初始化”绘图和图例。

我的问题可以总结如下:

1)如何更新我的绘图?如果我运行优化器10000次迭代,我不希望在我的绘图(文件大小)中有10000条上覆线。

2)在哪里放置legend命令?

我正在运行python 2.6.6和matplotlib 0.99.1.1

编辑:

This似乎是一个类似的问题,同样的问题也没有答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值