python作为一门简单易学且应用范围极广的语言有着其他语言无法比拟的优势,通过python可以实现各种各样的功能,例如我们可以利用python matplotlib的绘图库实现各种动态模拟仿真,在科学实验中有着极大的应用价值。下列是通过python实现地球公转的动态模拟图:

import numpy as np

import matplotlib as mpl

mpl.use("TkAgg")

from matplotlib import pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.animation as animmation

L1 = 10 #地球环绕轨迹的半径

v = 2*np.pi #地球运动的角速度

def updata (data): #随时间t变换设置新的地球位置的坐标,也即是随animmation.FuncAnimation函数的帧数参数变化每一帧的不同坐标位置的图片对象参数

global line

line.set_data([data[0], data[1]])

line.set_3d_properties(data[2])

return line,

def init(): #地球的起始位置

global line

ti = 0

t = t_drange[np.mod(ti, t_dlen)]

xt1 = x0 + L1 * np.cos(v * t)

yt1 = y0 + L1 * np.sin(v * t)

zt1 = z0 + 0

line, = ax.plot([xt1], [yt1], [zt1], marker='o', color='blue',markersize=8)

return line

def data_gen(): #随时间t变换的地球坐标,也即是animmation.FuncAnimation函数的帧数参数

global x0,y0,z0,t_dlen

data = []

for ti in range(1,t_dlen):

t = t_drange[ti]

xt1 = x0 + L1 * np.cos(v * t)#地球与太阳坐标关系方程

yt1 = y0 + L1 * np.sin(v * t)#地球与太阳坐标关系方程

zt1 = z0

data.append([xt1, yt1, zt1])

return data

t_range = np.arange(0, 1 + 0.005, 0.005)#设置环绕一周时间的范围以及运动间隔时间

t_drange = np.arange(0, 1, 0.005 )

t_len = len(t_range)

t_dlen = len(t_drange)

x0 = 0

y0 = 0

z0 = 0

x1 = x0 + L1 * np.cos(v * t_range)#地球坐标随时间变化的方程

y1 = y0 + L1 * np.sin(v * t_range)#地球坐标随时间变化的方程

z1 = z0 + np.zeros(t_len)

f = plt.figure(figsize=(6,6))#绘图的画布

ax = f.add_subplot(111,projection='3d')#设置3d坐标系

ax.set_aspect('equal')

ax.set_title("Sun-Earth-Moon Model")#设置图像标题

ax.plot([0], [0], [0], marker='o', color= 'red', markersize=16)#绘制太阳的各种属性

ax.plot(x1, y1, z1, 'r')#绘制地球图像

ax.set_xlim([-(L1 + 2), (L1 + 2)])#地球用动模型在坐标系中的范围

ax.set_ylim([-(L1 + 2), (L1 + 2)])#地球用动模型在坐标系中的范围

ax.set_zlim([-5, 5])#地球用动模型在坐标系中的范围

line, = ax.plot([], [], [], marker='o', color='blue',markersize=8,animated = True)#地球的形状颜色等属性

ani = animmation.FuncAnimation(f, updata, frames = data_gen(), init_func = init,interval = 20)#将上述函数对象传如animmation.FuncAnimation函数以生成连读的地球运动模型

plt.show()

python绘制动态模拟图-用python生成地球运动的动态模拟动态图相关推荐

  1. python绘制基因结构图_使用Python绘制GWAS分析中的曼哈顿图和QQ图

    [前言]其实这篇文章是为了简单介绍一下geneview的用法,它是一个Python高级库,建立在matplotlib的基础之上,专门用于基因组数据的可视化,目的是为了使创建高大上(精致)的基因组数据图 ...

  2. 用python绘制漂亮的图形-用python绘制图形的实例详解

    1.环境系统:windows10 python版本:python3.6.1 使用的库:matplotlib,numpy 2.numpy库产生随机数几种方法import numpy as npnumpy ...

  3. 用python绘制柱状图标题-如何用Python绘制3D柱形图

    本文主要讲解如何使用python绘制三维的柱形图,如下图 源代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...

  4. 怎么用python绘制柱状图_如何用python快速简单的制作柱状图?

    柱状图大家都会制作,那么你会用python制作柱状图吗? 我们先来看一下柱状图的定义:柱形图,又被称为长条图.或者柱状统计图,也叫作条图.条状图.棒形图,本质上来说就是一种以长方形的长度为变量的统计图 ...

  5. 用python绘制漂亮的图形-用Python代码绘制漂亮的生日蛋糕,python

    #如何用python绘制生日蛋糕? 平时在经常在b站看到up主绘制生日蛋糕的精美图片.以前学过c.c++语言,也想着用C去绘制一些生日蛋糕,绘制一些女神喜欢的小礼物,不过实现起来比较麻烦,刚好学了一些 ...

  6. python绘制樱花洒落_用python绘制樱花树

    黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开.那么今天就一起来看看怎样在python中画一棵美丽的樱花树- 说到用python画画,那当然就是小乌龟Turtle库了,为啥是t ...

  7. python绘制太阳系_如何利用Python动态模拟太阳系运转

    前言 提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫.发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙伴可以深入了解一下,这里就不多说了. 太阳以巨大的引力使周 ...

  8. python绘制分形图形教程_#python绘制分形图形教程#如何用Python绘制Circos图

    用Python实现Circos图的在线绘制的Circos有局限性,如对数据的要求.个性局限理速度等的问题,但如果你是一个Pythoneer或者喜欢用更加Pythonic的方式来个性化地绘制Circos ...

  9. python绘制表格界面_python 读取 excel 生成 html 页面

    前言 有天老板找我到办公室跟我说要做一个商城,商城卖出去东西就有佣金可以拿.我听着就头大.老板打开电脑给我看了网站:你看一下这个网站,照着它的流程就可以拥有一个商城了.我靠过去一看,大概了解一下:原来 ...

  10. python绘制反比例函数_描点法画反比例函数图像的动态演示——数学软件GeoGebra制作教程...

    Gif动态图又又又上传不成功了,建议跳转链接查看全文:描点法画反比例函数图像的动态演示--数学软件GeoGebra制作教程​www.toutiao.com 关于描点法画函数图像,前面已有三篇,包括以一 ...

最新文章

  1. 嘿!我用python帮我干这些事
  2. JavaScript获取节点类型、节点名称和节点值
  3. java 鉴权_我爱java系列之---【JWT实现微服务鉴权(一)】
  4. 清空计算机网络缓存,【缓存清理工具】缓存清理软件_电脑缓存清理软件【最新】-太平洋电脑网...
  5. ATL的GUI程序设计(2)
  6. linux ati显卡驱动下载,LINUX 下ati最新显卡驱动下载
  7. 《Java程序设计》第4周学习总结
  8. 安装SQLServer2008后Windows防火墙上的端口开放
  9. Flask应用错误处理
  10. lg android平台驱动程序,lg g3刷KDZ教程-KDZ线刷工具及USB驱动下载
  11. Git和Code Review流程
  12. linux 安装bt下载软件,CentOS 7 利用安装源安装Deluge,PT,BT下载工具
  13. 强制修改.ko文件中的内核版本号与内核对应
  14. 苹果显示未找到服务器,苹果浏览器找不到服务器是怎么回事
  15. 帆软填报-根据角色/权限设置校验规则(含开关配置表校验)
  16. contiki 参考
  17. js blur失焦事件与click点击事件冲突
  18. c语言高精度加减法程序,C语言实现高精度加减法
  19. 编程题解析-发型糟糕的一天
  20. Centos 7 彻底删除mysql步骤

热门文章

  1. 2015.09.06 C++笔记
  2. UI+Class Object
  3. TcpClient 有好多坑
  4. 为RHEL5安装JDK和配置tomcat
  5. IDE:集成开发环境(Integrated Development Environment)
  6. scala 时间格式转换(String、Long、Date)
  7. Leetcode:The Skyline Problem
  8. 进程调度(第三章 处理调度与死锁)
  9. ASP.NET在IE10中Form表单身份验证失效问题解决方法
  10. [推荐]数据库索引碎片的自动重建或重组