当前位置: 首页 > news >正文

python 画图|三维散点图输出

【1】引言

在前述学习进程中,已经初步掌握三维动画输出和散点图动画输出基本技能,可通过下述链接直达:

python画图|散点图动态输出-CSDN博客

python动画教程|Animations using Matplotlib-官网教程程序解读_如何用python制作微动画-CSDN博客

在此基础上,很容易想到在三维空间输出散点动画,经过一段时间的探索,这个技能已经初步掌握,现在分享给大家。

【2】核心代码

【2.1】ax = fig.add_subplot(projection='3d')

在前述有关联的学习中,可以分为三大类:三维图、散点图和动画。

经过追溯,画三维图需要使用下述代码进行说明

ax = fig.add_subplot(projection='3d')

使用这些代码的文章链接包括且不限于:

python画图|同时输出二维和三维图_python怎么输出3d图-CSDN博客

python画图|极坐标下的3D surface_python 图片surface3d-CSDN博客

python画图|3D直方图基础教程-CSDN博客 

【2.2】plt.scatter(x,y)或ax.scatter(x,y)

画散点图需要使用下述代码进行说明:

plt.scatter(x,y)

ax.scatter(x,y)

使用这些代码的文章链接包括且不限于:  

python画散点图|scatter()函数小试牛刀(入门级教程)_python ax.scatter-CSDN博客

python画图|极坐标中画散点图_极坐标散点图-CSDN博客

【2.3】plt.scatter(x,y)或ax.scatter(x,y)

画动画需要使用下述代码进行说明:

ani = animation.FuncAnimation(fig, animate, interval=50)

使用这些代码的文章链接包括且不限于:

 

python动画教程|Animations using Matplotlib-官网教程程序解读_如何用python制作微动画-CSDN博客

python画图|曲线动态输出基础教程-CSDN博客 

python画图|散点图动态输出-CSDN博客 

【3】自主编写三维散点图输出代码

按照以前的学习思路,首先引入关键模块:计算、画图和动画:

import numpy as np #引入计算模块
import matplotlib.pyplot as plt #引入画图模块import matplotlib.animation as animation #引入动画模块

然后定义画图:

fig=plt.figure() #定义要画图
ax=fig.add_subplot(projection='3d') #定义画三维图

之后定义变量和初始值:

t=np.linspace(0,2*np.pi,100) #定义自变量
x=ax.scatter(0,0,0) #定义初始值

在此基础上进行动画函数的自定义,以实现散点逐个输出:

def animate(i): #定义动画函数,将散点图逐个输出ax.scatter(t[i],np.cos(t[i]),np.sin(t[i]))return x

最后制作动画将其输出:

ani=animation.FuncAnimation( #输出动画fig,animate,repeat=True,interval=10
)plt.show() #输出图形

输出图形为:

图1

至此的完整代码为:

import numpy as np #引入计算模块
import matplotlib.pyplot as plt #引入画图模块import matplotlib.animation as animation #引入动画模块fig=plt.figure() #定义要画图
ax=fig.add_subplot(projection='3d') #定义画三维图t=np.linspace(0,2*np.pi,50) #定义自变量
x=ax.scatter(0,0,0) #定义初始值
def animate(i): #定义动画函数,将散点图逐个输出ax.scatter(t[i],np.cos(t[i]),np.sin(t[i]))return xani=animation.FuncAnimation( #输出动画fig,animate,repeat=True,interval=10)ani.save('scatter-aixmls.gif') #保存动画
plt.show() #输出图形

【4】代码改写

尝试画两条曲线,定义代码如下:

x=ax.scatter(0,0,0)
y=ax.scatter(0,0,0)
def animate(i):ax.scatter(t[i],np.cos(t[i]),np.sin(t[i]))ax.scatter(t[i], np.sin(t[i]), np.cos(t[i]))return x,y

输出图像为:

图2

对应完整代码为:

import numpy as np
import matplotlib.pyplot as pltimport matplotlib.animation as animation
from matplotlib.projections import projection_registryfig=plt.figure()
ax=fig.add_subplot(projection='3d')t=np.linspace(0,2*np.pi,100)
x=ax.scatter(0,0,0)
y=ax.scatter(0,0,0)
def animate(i):ax.scatter(t[i],np.cos(t[i]),np.sin(t[i]))ax.scatter(t[i], np.sin(t[i]), np.cos(t[i]))return x,yani=animation.FuncAnimation(fig,animate,repeat=True,interval=10
)
ax.legend()
ani.save('scatter-aixmls-2lines.gif') #保存动画
plt.show()

【5】增加图名

非常简单,给图像增加名称:

ax.set_title('3d-scatter-aixmls-2lines')

图3

【6】总结

自主探索了三维散点图输出教程。

 


http://www.mrgr.cn/news/49116.html

相关文章:

  • 现代数字信号处理I-P2概率论学习笔记
  • 基于51单片机的超市商场电子秤MPX4115proteus仿真
  • 基于Java的旅游网站管理系统—计算机毕业设计源码39235
  • LeetCode题练习与总结:区域和检索 - 数组不可变--303
  • 【畅捷通好生意-注册安全分析报告-无验证方式导致安全隐患】
  • 利用AI工具快速帮助自己升级知识体系,同时保持警惕不要过度依赖
  • JAVA学习-练习试用Java实现“括号生成”
  • YOLO11改进|注意力机制篇|引入注意力机制Shuffle Attention
  • ubuntu20.4环境下gcc-aarch64交叉编译器的安装
  • 【SOP】迭代管理-checkList模版
  • 跨域问题及解决方案详解:同源策略与CORS机制
  • python 画同心圆/棋盘
  • FLASK 数据库建立以及部署和表的创建
  • 了解Python 中的 __class__ 属性
  • 企业架构蓝图:理论指导下的数字化转型实践路径
  • 基于ESP32与Raspberry Pi的智能家居物联网项目详解
  • 模型 知识诅咒
  • Golang | Leetcode Golang题解之第475题供暖器
  • 【C语言教程】【常用类库】(七)标准实用工具库 - <stdlib.h>
  • Python 中也支持多态(Polymorphism)