曲靖网站建设电话,公司网站制作开发公司,广州网站建设推广公司,wordpress 上传svg【1】引言
前序已经完成了基础的二维图和三维图绘制教程探索#xff0c;可直达的链接包括但不限于#xff1a;
python画图|3D参数化图形输出-CSDN博客
python画三角函数图|小白入门级教程_正余弦函数画图python-CSDN博客
在学习过程中#xff0c;发现一个案例#xff1…【1】引言
前序已经完成了基础的二维图和三维图绘制教程探索可直达的链接包括但不限于
python画图|3D参数化图形输出-CSDN博客
python画三角函数图|小白入门级教程_正余弦函数画图python-CSDN博客
在学习过程中发现一个案例 在三维空间的不同平面上分别绘制不同类型二维图。
经过一段时间的学习我对此有一些理解现在分享出来和大家一起探讨。
【2】官网教程
打开下述链接可直达官网官网的图形比较美丽我对代码也进行了解读。
Plot 2D data on 3D plot — Matplotlib 3.9.2 documentation
【3】代码解读
首先是引入画图模块和计算模块 import matplotlib.pyplot as plt #定义画图模块
import numpy as np #定义计算模块 然后非常丝滑地定义了要画三维图 ax plt.figure().add_subplot(projection3d) #定义要画三维图 之后对xoy平面的图形进行了定义 x np.linspace(0, 1, 100) #定义自变量
y np.sin(x * 2 * np.pi) / 2 0.5 #定义因变量
ax.plot(x, y, zs0, zdirz, labelcurve in (x, y)) #在xoy平面画图 然后定义了一个新的数组 colors (r, g, b, k) #设置colors数组 定义随机数种子 np.random.seed(19680801) #定义随机数组种子 定义三个矩阵 x np.random.sample(20 * len(colors)) #定义新矩阵x以colors数组的长度为基础生成20倍长度数量的随机数据
y np.random.sample(20 * len(colors)) #定义新矩阵y以colors数组的长度为基础生成20倍长度数量的随机数据
c_list [] #定义空矩阵 自定义一个函数对c_list[ ]矩阵进行填充 for c in colors: #自定义函数c_list.extend([c] * 20) #对colors中的数据乘以20后叠加到c_list 在XOZ平面绘制散点图 ax.scatter(x, y, zs0, zdiry, cc_list, labelpoints in (x, z)) #在xoz平面画图 有上式可以看出c_list代表的是变化的颜色 所以上面的自定义函数是调整散点图的颜色。
之后设置坐标轴的基本属性 ax.legend() #输出图例
ax.set_xlim(0, 1) #设置X轴范围(0, 1)
ax.set_ylim(0, 1) #设置Y轴范围(0, 1)
ax.set_zlim(0, 1) #设置Z轴范围(0, 1)
ax.set_xlabel(X) #设置X轴标签为‘X’
ax.set_ylabel(Y) #设置Y轴标签为‘Y’
ax.set_zlabel(Z) #设置Z轴标签为‘Z’ 最后输出图形 ax.view_init(elev20., azim-35, roll0) #视角角度转换plt.show() #输出图形 这里的 ax.view_init()函数是对三维图的观察角度进行调整我们接下来会进行探索。
获得的输出图形为 图1
【4】代码改写
【4.1】尝试修改颜色矩阵 colors (r, g, b, k,y) #设置colors数组 之前的自定义代码是100个取值但colors数组中只有四个元素及时乘以20也只有80个元素但一共有100个输出值为使颜色均匀分布增加一个黄色的代码‘y’。代码简写链接可以参考下述链接
https://matplotlib.org/stable/users/explain/colors/colors.html#colors-def
此时的输出图形为 图2
【4.2】修改ax.view_init()函数
在上述基础上修改ax.view_init()函数将其改为 ax.view_init(elev90., azim0, roll0) #视角角度转换
ax.set_title(elev90., azim0, roll0) 增加了一行 ax.set_title(elev90., azim0, roll0)用以记录。 图3 可见elev90是指从Z轴垂直看XOY平面。
然后继续修改 ax.view_init(elev90., azim90, roll0) #视角角度转换
ax.set_title(elev90., azim90, roll0) 输出结果为 图4 可见elev90azim90是指在从Z轴垂直看XOY平面的基础上对XOY平面继续顺时针旋转90度。
然后继续修改 ax.view_init(elev90., azim90, roll90) #视角角度转换
ax.set_title(elev90., azim90, roll90) 输出结果为 图5 可见elev90azim90 roll90是指在从Z轴垂直看XOY平面对XOY平面顺时针旋转90度的基础上再对整个图顺时针旋转90度。
未验证上述结论继续修改 ax.view_init(elev90., azim60, roll90) #视角角度转换
ax.set_title(elev90., azim60, roll90) 输出图形为 图6
可以看出elev90azim60 roll90是指在从Z轴垂直看XOY平面对XOY平面顺时针旋转960度的基础上再对整个图顺时针旋转90度。 【5】结论
探索了在三维空间的不同平面上分别绘制不同类型二维图的教程。