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】总结
本次学习了三维图的基本画法,并尝试修改了因变量表达式、三维图画图变量,并实现了坐标轴标签的输出。