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似乎是一個類似的問題,同樣的問題也沒有答案。
總結
以上是生活随笔為你收集整理的python数组plot_Python Matplotlib:动态更新plot-数组长度未知的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 删除crontab_cen
- 下一篇: python定义一个字典、存储雇员号和姓