我知道這些問題:(A),(B)和(C) - 所有這些都解決了我的問題的一部分。
我也讀過Animations Cookbook
但是,我的問題似乎沒有在上述任何一箇中解決。
我希望繪製優化器運行時由優化器返回的目標函數。我不知道優化器將運行多少次迭代。獨立是如何得到的含有目標函數的數組,這個問題可以在這個小例子,被隔離:Python Matplotlib:動態更新圖 - 數組長度不知道先驗
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')
這裏的情節只是「pseudo'更新的。真正發生的是,每次迭代都會生成一條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.)如何更新我的情節?如果我運行優化器進行10,000次迭代,我不想在我的圖(文件大小)中使用10,000個覆蓋線。
2.)我在哪裏放置legend
命令?
我運行的Python 2.6.6和matplotlib 0.99.1.1
編輯:
This似乎是一個類似的問題,同樣沒有答案的問題。