如何解决我希望 3D 动画点的颜色随时间变化
因此,对于我的最终项目,我正在为 3 个等质量恒星的轨道设置动画,这需要以某种方式为 4D,我希望动画中这些点的颜色随着时间的推移而变化,就像彩色地图一样或者其他的东西。我该怎么做?
这是我的代码:
t = trajectory[0]/day #pull out time array in days
positions = trajectory[1]/au #pull out positions array in AU
x = positions[:,:,0] #pull out x positions in AU
y = positions[:,1] #pull out y positions in AU
z = positions[:,2] #pull out z positions in AU
FFMpegWriter = ani.writers['ffmpeg']
fig = plt.figure(figsize=(5,5)) #set figure size
ax = fig.gca(projection='3d') #set projection to 3D
writer = ani.FFMpegWriter(fps=30) #set fps to 30
with writer.saving(fig,'figure8.mp4',200):
for i in range(len(t)): #for loop length of time array
plt.cla() #clear plot
colors = ["yellow","red","blue"] #set particle color list
ax.scatter(x[i,:],y[i,z[i,s=masses[:]/np.max(masses)*100,label = [f'Yellow ={masses[0]},red ={masses[1]},blue ={masses[2]}']) #scatter plot of x,y,z positons
ax.set_xlim(-1,1); ax.set_ylim(-1,1); ax.set_zlim(-1,1) #set x,z limit
ax.set_xlabel('x (AU)'); ax.set_ylabel('y (AU)'); ax.set_zlabel('z (AU)') #set x,z label
ax.set_title(f'figure 8 System: day {t[i]}') #set title
ax.legend(loc='upper center',bBox_to_anchor=(0.5,-0.05)) #plot legend
if i % 200 == 0: #every 200 frames print we are saving frame
print(f"saving movie frame {i}")
writer.grab_frame() #grab frame
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。