我想繪製兩個使用Matplotlib動畫庫的旋轉橢圓,並且設法讓它工作(或多或少)。問題是正在渲染的第一幀沒有更新,所以當我在畫布中獲得兩個旋轉橢圓時,我也有橢圓在原始位置/方向。看看我的一段簡單的代碼:Matplotlib動畫:使用blit時第一幀保留在畫布中
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
from matplotlib import animation
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
e1 = Ellipse(xy=(0.5, 0.5), width=0.5, height=0.2, angle=60)
e2 = Ellipse(xy=(0.8, 0.8), width=0.5, height=0.2, angle=100)
def init():
ax.add_patch(e1)
ax.add_patch(e2)
return [e1,e2]
def animate(i):
e1.angle = e1.angle + 0.5
e2.angle = e2.angle + 0.5
return [e1,e2]
anim = animation.FuncAnimation(fig, animate, init_func=init, interval=1, blit=True)
plt.show()
任何想法如何解決這個問題?我當然可以關閉blit,但這會讓它非常慢,所以這不是一個真正的選擇。
謝謝!
編輯:最後的(工作)代碼
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
from matplotlib import animation
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
e1 = Ellipse(xy=(0.5, 0.5), width=0.5, height=0.2, angle=60)
e2 = Ellipse(xy=(0.8, 0.8), width=0.5, height=0.2, angle=100)
ax.add_patch(e1)
ax.add_patch(e2)
def init():
e1.set_visible(False)
e2.set_visible(False)
return [e1,e2]
def animate(i):
if i == 1:
e1.set_visible(True)
e2.set_visible(True)
e1.angle = e1.angle + 0.5
e2.angle = e2.angle + 0.5
return [e1,e2]
anim = animation.FuncAnimation(fig, animate, init_func=init, interval=1, blit=True)
plt.show()
沒有,沒有工作,結果和以前一樣。 – MPA
你確定嗎?我複製了昨天發佈的代碼,並且在這裏順利運行。 (Matplotlib 1.2.1) –
是的,我複製粘貼你的代碼,仍然像以前一樣。我也在v1.2.1上。 – MPA