我希望 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...