模拟太阳系8大行星运行图matplotlib实现
1 效果图
2 说明
=====
2.1 我曾用matplotlib实现模拟太阳-地球-月亮的运行轨迹图,很受欢迎。
《python3的matplotlib的模拟太阳-地球-月亮运动示意图代码分析》
2.2 这次再使用python3的语言,用matplotlib来实现太阳系的八大行星模拟示意图。
2.3 熟悉python编程语言和思维,熟悉matplotlib作图。
3 代码讲解:
=========
3.1 第1步:导入模块import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D import matplotlib.animation as animmation
3.2 第2步:画布的相关设置f = plt.figure(figsize=(15,15)) #绘图的画布大小和定义初始化 f.patch.set_facecolor("black") #画布背景颜色设置 ax = f.add_subplot(111,projection="3d") #设置3d坐标系 #这个只是图表中的背景颜色设置 ax.set_facecolor("black") # OR #ax.set(facecolor = "black") #三维坐标刻度设置 ax.set_xlim([-65, 65]) ax.set_ylim([-65, 65]) #模型在坐标系中的范围 ax.set_zlim([-3, 3])
3.3 第3步:太阳设置:形状,颜色和大小,位置固定ax.plot([0], [0], [0], marker="o", color= "red", markersize=70)
3.4 第4步:8大行星的半径、轨道和角度设置#常量的设置 #设置轨道半径 r_list=[40,43,46,51,55,62,71,85] #设置行星角速度 o_list=[13,9,7,6,5,4,3,2] #设置环绕一周时间的范围以及运动间隔时间 t_range = np.arange(0, 1 + 0.005, 0.005) t_len = len(t_range) #行星坐标随时间变化方程 #z坐标 zz=np.zeros(t_len) #x和y坐标 x_l_list=[] y_l_list=[] for i in range(len(r_list)): x_l_list.append(r_list[i] * np.cos(o_list[i]* np.pi* t_range)) y_l_list.append(r_list[i] * np.sin(o_list[i]* np.pi* t_range)) #绘制行星的圆形轨迹 for i in range(len(r_list)): #轨道线颜色和宽度设置 ax.plot(x_l_list[i], y_l_list[i], zz, "gray",linewidth=0.2)
3.5 第5步:8大行星颜色和大小设置ball1, = ax.plot([], [], [], marker="o", color="yellow",markersize=10) ball2, = ax.plot([], [], [], marker="o", color="pink",markersize=10) ball3, = ax.plot([], [], [], marker="o", color="blue",markersize=10) ball4, = ax.plot([], [], [], marker="o", color="orange",markersize=10) ball5, = ax.plot([], [], [], marker="o", color="brown",markersize=16) ball6, = ax.plot([], [], [], marker="o", color="red",markersize=16) ball7, = ax.plot([], [], [], marker="o", color="gray",markersize=14) ball8, = ax.plot([], [], [], marker="o", color="green",markersize=14)
3.6 第6步:初始化行星的起始位置def init(): return ball1,ball2, ball3,ball4,ball5,ball6,ball7,ball8
3.7 第7步:数据更新,随时间t的变换设置新的行星位置坐标def update(data): ball1.set_data([data[0], data[1]]) ball1.set_3d_properties(data[2]) ball2.set_data([data[3],data[4]]) ball2.set_3d_properties(data[5]) ball3.set_data([data[6], data[7]]) ball3.set_3d_properties(data[8]) ball4.set_data([data[9], data[10]]) ball4.set_3d_properties(data[11]) ball5.set_data([data[12], data[13]]) ball5.set_3d_properties(data[14]) ball6.set_data([data[15], data[16]]) ball6.set_3d_properties(data[17]) ball7.set_data([data[18], data[19]]) ball7.set_3d_properties(data[20]) ball8.set_data([data[21], data[22]]) ball8.set_3d_properties(data[23]) return ball1,ball2,ball3,ball4,ball5,ball6,ball7,ball8
3.8 第8步:8大行星的数据更新,随时间t变换的行星坐标def data_gen(): data = [] for ti in range(1,t_len): t = t_range[ti] #行星与太阳坐标的关系方程 xt1 = r_list[0] * np.cos(o_list[0] * np.pi* t) yt1 = r_list[0] * np.sin(o_list[0] * np.pi* t) xt2 = r_list[1] * np.cos(o_list[1] * np.pi* t) yt2 = r_list[1] * np.sin(o_list[1] * np.pi* t) xt3 = r_list[2] * np.cos(o_list[2]* np.pi * t) yt3 = r_list[2] * np.sin(o_list[2] * np.pi* t) xt4 = r_list[3] * np.cos(o_list[3]* np.pi * t) yt4 = r_list[3] * np.sin(o_list[3] * np.pi* t) xt5 = r_list[4] * np.cos(o_list[4]* np.pi * t) yt5 = r_list[4] * np.sin(o_list[4] * np.pi* t) xt6 = r_list[5] * np.cos(o_list[5] * np.pi* t) yt6 = r_list[5] * np.sin(o_list[5]* np.pi * t) xt7 = r_list[6] * np.cos(o_list[6] * np.pi* t) yt7 = r_list[6] * np.sin(o_list[6]* np.pi * t) xt8 = r_list[7] * np.cos(o_list[7] * np.pi* t) yt8 = r_list[7] * np.sin(o_list[7] * np.pi* t) zt=0 data.append([xt1,yt1,zt,xt2,yt2,zt,xt3,yt3,zt,xt4,yt4,zt,xt5,yt5,zt,xt6,yt6,zt,xt7,yt7,zt,xt8,yt8,zt]) return data
3.9 第9步:动画挂起和展示ani = animmation.FuncAnimation(f, update, frames = data_gen(), init_func = init,interval = 200) #隐藏画轴 plt.axis("off") plt.show()
分享出来,在动画中学习计算机编程,学习python思维。
生完孩子,和老公分房睡的后果竟然这么严重搜索瑞丁老爸启蒙之家,一站解决家长的教育困惑。让孩子拥有最有价值的童年!1hr孩子刚刚1岁两个月时,Y离婚了。这个消息让人震惊,在我眼里,她的婚姻模式极其牢固父母公婆收入不错,两家
别再对孩子发火了!看看这组感动无数爸妈的漫画搜索瑞丁老爸启蒙之家,一站解决家长的教育困惑。让孩子拥有最有价值的童年!我们能拥有孩子多少年?当孩子小时候缠着我们,我们总觉得烦觉得累,但等到孩子长大去远方求学工作,才发现时光如梭
这个男孩诞生轰动世界,因为他爸是全球最帅的男人,最牛的老公!搜索瑞丁老爸启蒙学院,一站解决家长的教育困惑。让孩子拥有最有价值的童年!奇迹之子这几天,美国加州大火肆虐,截止目前,已造成48人死亡228人失踪,伤亡人数还在持续攀升,成为美国有史
英语启蒙,如何合理避坑?这一篇都说透了有心的爸妈都该读读!搜索瑞丁老爸启蒙学院,一站解决家长的教育困惑。让孩子拥有最有价值的童年!1hr感恩相遇!当今的父母几乎都是竭尽所能地重视教育,生怕一点不当心,就错过了孩子发展的黄金时期。真正是可怜
把6个女儿送入美国顶尖名校,她说教育才是给女儿最好的嫁妆!搜索瑞丁老爸启蒙学院,一站解决家长的教育困惑。让孩子拥有最有价值的童年!美国有一位华人母亲,出生贫寒,却把6个女儿都送进了美国顶尖大学,大女儿更成为了历史上第一位华人部长,她究竟是
那些陪伴越多,越差劲的孩子前两天,家里来了两个小客人,是我学姐的两个孩子。哥哥已经上小学了,妹妹只上小班。学姐大学里就是个才女,两个小家伙倒是像极了他们的妈妈,看到我书房里有好多儿童书,就欢天喜地地跑去看书
冲孩子发脾气的好妈妈搜索瑞丁老爸启蒙之家,一站解决家长的教育困惑。让孩子拥有最有价值的童年!天快半夜的时候,突然接到了小妹的电话。电话那头,小妹泣不成声哥,你说我是不是一个坏妈妈。原来,快到年底了,正
男孩被性侵的概率远高于女孩,别再犯这种低级错误了!1hr暑假的时候,有个女性朋友在朋友圈上发了一条消息气炸了,在游泳馆更衣室换衣服的时候,有个妈妈居然带了自己四五岁的儿子进来换衣服。更衣室里好多人内裤都没穿,尴尬死了。我说了那个妈
孩子的鞋不能超过3双?心理学家的分析让我恍然大悟!搜索瑞丁老爸启蒙之家,一站解决家长的教育困惑。让孩子拥有最有价值的童年!1hr不!选择越多,孩子可能越不快乐在某公园里,一个小男孩正在安静地荡秋千,这时他看见旁边的滑梯上没人,哒哒
发现女儿早恋,这个爸爸的做法绝了!1hr女儿高三那年,我最担心的事发生了女儿暗恋上了她们班的班长,一个阳光帅气有激情,学习好得不要不要的男神。根据我的经验,这样的男生,应该不仅仅是女儿一个人的神,而是好多女生心中的
为什么要让孩子背古诗?1hr这两年,有关于古诗的教育一直很火。从去年开始,义务教育语文教材增加古诗文数量而越来越多的明星父母,也越来越重视孩子的诗词教育。汪涵的儿子小沐沐,不到三岁就可以背很多古诗现在孩