python画图|3D图基础教程

python画3D图和2D流程类似:

【a】定义一个自变量x;

【b】定义两个因变量y和z;

【c】直接输出plot(x,y,z)

今天就一起快乐学习一下画3D图的基础教程。

【1】官网教程

打开官网,可以迅速找到学习教程,参考下述链接:

https://matplotlib.org/stable/plot_types/3D/plot3d_simple.html

然后我们解读一下示例代码。

复制代码
import matplotlib.pyplot as plt #引入画图模块matplotlib
import numpy as np #引入计算模块numpy

plt.style.use('_mpl-gallery') #暂未找到实际意义,可先不用管。经测试,是一种控制输出大小的模板

# Make data
n = 100 #定义常数
xs = np.linspace(0, 1, n) #定义自变量[0,1),中间取值100个点
ys = np.sin(xs * 6 * np.pi) #定义因变量
zs = np.cos(xs * 6 * np.pi) #定义因变量

# Plot
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})  #定义一个图,用ax控制坐标轴属性
# subplot_kw={"projection": "3d"},projection是指将采取哪种画图方法,3d就是告诉matplotlib要画三维图
ax.plot(xs, ys, zs)  #画三维图

ax.set(xticklabels=[], #设置x轴
       yticklabels=[], #设置y轴
       zticklabels=[]) #设置z轴

plt.show() #输出图形

【2】代码修改

学习完官网教程之后,我们先把plt.style.use('_mpl-gallery') 转化为注释,再把zs由zs = np.cos(xs * 6 * np.pi)改为:

zs = np.sin(ys * 6 * np.pi)

输出结果为:

++图1++

然后,我们尝试把as.plot更换为ax.plot(xs,xs,xs),更换后的结果为:

++图2++

然后,我们尝试把as.plot更换为ax.plot(xs,ys,ys),更换后的结果为:

++图3++

然后,我们尝试把as.plot更换为ax.plot(xs,zs,zs),更换后的结果为:

++图4++

然后,增加标签:

复制代码
ax.set_xlabel('xs') 
ax.set_ylabel('ys') 
ax.set_zlabel('zs')

这时候的输出图形为:

++图5++

由图1至图5,我们灵活修改了输出图形,并增加了轴的标签。

完整代码为:

python 复制代码
import matplotlib.pyplot as plt #引入画图模块matplotlib
import numpy as np #引入计算模块numpy

#plt.style.use('_mpl-gallery') #暂未找到实际意义,可先不用管。经测试,是一种控制输出大小的模板

# Make data
n = 100 #定义常数
xs = np.linspace(0, 1, n) #定义自变量[0,1),中间取值100个点
ys = np.sin(xs * 6 * np.pi) #定义因变量
zs = np.sin(ys * 6 * np.pi) #定义因变量

# Plot
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})  #定义一个图,用ax控制坐标轴属性
# subplot_kw={"projection": "3d"},projection是指将采取哪种画图方法,3d就是告诉matplotlib要画三维图
ax.plot(xs, zs, zs)  #画z三维图

ax.set(xticklabels=[], #设置x轴
       yticklabels=[], #设置y轴
       zticklabels=[]) #设置z轴
ax.set_xlabel('xs') #设置x轴标签
ax.set_ylabel('ys') #设置y轴标签
ax.set_zlabel('zs') #设置z轴标签
plt.show() #输出图形

【3】总结

本次学习了三维图的基本画法,并尝试修改了因变量表达式、三维图画图变量,并实现了坐标轴标签的输出。

相关推荐
databook1 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar3 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户8356290780513 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_3 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机10 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机11 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机11 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机11 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i11 小时前
drf初步梳理
python·django
每日AI新事件11 小时前
python的异步函数
python