我想在 spyder 中制作影片,但我只是得到一個靜態圖。這是代碼。
import numpy as np
import matplotlib.pyplot as plt
plt.figure(1)
plt.clf()
plt.axis([-10,10,-10,10])
n=10
pos=(20*np.random.sample(n*2)-10).reshape(n,2)
vel=(0.3*np.random.normal(size=n*2)).reshape(n,2)
sizes=100*np.random.sample(n) 100
colors=np.random.sample([n,4]
circles=plt.scatter(pos[:,0], pos[:,1], marker='o', s=sizes, c=colors)
for i in range(100):
pos=pos vel
bounce=abs(pos)>10
vel[bounce] = -vel[bounce]
circles.set_offsets(pos)
plt.draw()
plt.show()
這就是我得到的,我試過 %matplotlib qt5 但它沒有改變輸出并且仍然保持1 ] 1
uj5u.com熱心網友回復:
要使影片正常作業,您需要做兩件事。
- 首先,您需要在影片制作后顯示圖形,因此
plt.show()應該跳出for回圈。 - 同樣為了能夠看到幀,您需要在它們之間放置少量時間,這可以通過在幀之間添加
plt.pause(t)(t以秒為單位)來實作。
下面顯示的代碼是生成影片圖的編輯代碼。
import numpy as np
import matplotlib.pyplot as plt
plt.figure(1)
plt.clf()
plt.axis([-10,10,-10,10])
n=10
pos=(20*np.random.sample(n*2)-10).reshape(n,2)
vel=(0.3*np.random.normal(size=n*2)).reshape(n,2)
sizes=100*np.random.sample(n) 100
colors=np.random.sample([n,4])
circles=plt.scatter(pos[:,0], pos[:,1], marker='o', s=sizes, c=colors)
for i in range(100):
pos=pos vel
bounce=abs(pos)>10
vel[bounce] = -vel[bounce]
circles.set_offsets(pos)
plt.draw()
plt.pause(0.05)
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/374561.html
標籤:Python matplotlib 间谍
上一篇:多個餅圖,一個圖例
下一篇:如何根據列中的顏色為條形圖著色
