Python绘图-14绘制3D图(上)

14.1绘制3D散点图

14.1.1图像呈现

14.1.2绘图代码

import numpy as np  # 导入numpy库,numpy是Python的一个强大的数值计算扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块pyplot,matplotlib是Python的一个绘图库,pyplot是其中的一个子模块,提供了MATLAB类似的绘图API。
from matplotlib import rcParams  # 从matplotlib库中导入rcParams模块,rcParams是一个字典对象,用于处理与matplotlib相关的各种配置参数。
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
# 使用config字典中的配置参数更新rcParams,从而修改matplotlib的默认配置
rcParams.update(config)
# 修正matplotlib配置,使得在显示负号时不会出现问题
plt.rcParams['axes.unicode_minus'] = False
# 设置数据点的数量
N = 250
# 设置随机数种子,使得每次生成的随机数序列相同
np.random.seed(124)
# 生成一个包含N个随机数的数组,范围在0到1之间,然后乘以15
x = 15 * np.random.random(N)
# 生成y值,它是x的正弦值加上一个小的随机扰动
y = np.sin(x) + 0.25 * np.random.random(N)
# 生成z值,它是x的余弦值加上一个小的随机扰动
z = np.cos(x) + 0.25 * np.random.random(N)
# 创建一个新的图形窗口,并设置其大小和分辨率
plt.figure(figsize=(6, 6), dpi=110)
# 创建一个3D坐标轴的子图
ax = plt.axes(projection='3d')
# 在3D坐标轴上绘制散点图,散点的坐标为(x, y, z),颜色为红色
ax.scatter3D(x, y, z, color='r')
# 设置x轴的标签、字体大小和标签与轴之间的距离
ax.set_xlabel('x', fontsize=20, labelpad=20)
# 设置y轴的标签、字体大小和标签与轴之间的距离
ax.set_ylabel('y', fontsize=20, labelpad=20)
# 设置z轴的标签、字体大小和标签与轴之间的距离
ax.set_zlabel('z', fontsize=20, labelpad=20)

# 显示图形窗口
plt.show()

14.2设置3D散点图长宽比

14.2.1图像呈现

14.2.2绘图代码

import numpy as np  # 导入numpy库,numpy是Python中用于数值计算的一个扩展程序库,常用于处理大型多维数组和矩阵运算。  
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块pyplot,用于生成各种静态、动态、交互式的可视化图形。
from matplotlib import rcParams  # 从matplotlib库中导入rcParams,rcParams是一个字典对象,用于处理matplotlib的默认配置参数。
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {
    "font.family": 'serif',  # 设置字体族为衬线字体
    "font.size": 10.5,  # 设置字体大小为10.5
    "mathtext.fontset": 'stix',  # 设置数学文本的字体集为'stix'
    "font.serif": ['SimSun']  # 设置衬线字体为'SimSun'(即宋体)
}
rcParams.update(config)  # 使用config字典中的配置参数更新rcParams,从而修改matplotlib的默认配置
plt.rcParams['axes.unicode_minus'] = False  # 设置matplotlib配置参数,使得在显示负号时不会出现问题,确保负号正常显示
N = 250  # 设置数据点的数量为250
np.random.seed(124)  # 设置随机数种子为124,以确保每次生成的随机数序列相同,方便结果复现
x = 15 * np.random.random(N)  # 生成一个包含N个元素的数组,数组中的元素是0到1之间的随机数,然后乘以15
y = np.sin(x) + 0.25 * np.random.random(N)  # 计算y值,它是x的正弦值加上一个小的随机扰动
z = np.cos(x) + 0.25 * np.random.random(N)  # 计算z值,它是x的余弦值加上一个小的随机扰动
plt.figure(figsize=(6, 6), dpi=110)  # 创建一个新的图形窗口,设置其大小为6x6英寸,分辨率为110像素/英寸
ax = plt.axes(projection='3d')  # 创建一个3D坐标轴的子图,用于绘制3D图形
ax.scatter3D(x, y, z, color='r')  # 在3D坐标轴上绘制散点图,散点的坐标为(x, y, z),颜色为红色
ax.set_xlabel('x', fontsize=20, labelpad=20)  # 设置x轴的标签为'x',字体大小为20,标签与轴之间的距离为20
ax.set_ylabel('y', fontsize=20, labelpad=20)  # 设置y轴的标签为'y',字体大小为20,标签与轴之间的距离为20
ax.set_zlabel('z', fontsize=20, labelpad=20)  # 设置z轴的标签为'z',字体大小为20,标签与轴之间的距离为20
ax.set_box_aspect((2., 1.5, 1.2))  # 设置3D坐标轴的长宽比,这里的比例分别对应x、y、z轴
plt.show()  # 显示图形窗口

14.3绘制3D折线图

14.3.1图像呈现

14.3.2绘图代码

import numpy as np  # 导入numpy库,numpy是一个用于处理数组和进行数值计算的强大Python库。
import matplotlib.pyplot as plt  # 导入matplotlib的pyplot模块,用于绘制二维和三维图形。
from matplotlib import rcParams  # 从matplotlib库中导入rcParams,它用于自定义图形的各种属性。  
# 定义一个字典config,该字典包含用于设置图形字体、大小和其他相关配置参数的键值对。
config = {
    "font.family": 'serif',  # 设置字体族为衬线字体。
    "font.size": 10.5,  # 设置字体大小为10.5。
    "mathtext.fontset": 'stix',  # 设置数学文本的字体集为'stix'。
    "font.serif": ['SimSun']  # 设置衬线字体为'SimSun'(即宋体)。
}

rcParams.update(config)  # 使用config字典中的配置参数更新matplotlib的全局配置参数rcParams。
plt.rcParams['axes.unicode_minus'] = False  # 设置配置参数,确保在图形中正常显示负号。

N =100  # 设定数据点的数量为100。
np.random.seed(124)  # 设置随机数种子为124,以确保每次生成的随机数序列相同。
# 使用linspace函数生成一个包含N个元素的数组,这些元素在0到15之间均匀分布,用于表示x轴的坐标。
xline = np.linspace(0, 15, N)
# 计算yline,它是xline中每个元素的正弦值。
yline = np.sin(xline)
# 计算zline,它是xline中每个元素的余弦值。
zline = np.cos(xline)
# 创建一个新的图形窗口,并设置其大小为9x6英寸,分辨率为110像素/英寸。
fig = plt.figure(figsize=(9, 6), dpi=110)
# 创建一个3D坐标轴的子图,用于绘制3D图形。
ax = plt.axes(projection='3d')
# 在3D坐标轴上绘制由xline、yline和zline指定的折线图。
ax.plot3D(xline, yline, zline)
# 设置x轴的标签。
ax.set_xlabel('x')
# 设置y轴的标签。
ax.set_ylabel('y')
# 设置z轴的标签。
ax.set_zlabel('z')
# 设置3D坐标轴的长宽比,以更好地展示图形的形状。
ax.set_box_aspect((2, 1.5, 1.2))
# 显示图形窗口。
plt.show()

14.4设置3D图视角

14.4.1图像呈现

14.4.2绘图代码

import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams  # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config)  # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False  # 运行配置参数总的轴(axes)正常显示正负号(minus)
N = 250
np.random.seed(124)
x = 15 * np.random.random(N)
y = np.sin(x) + 0.25 * np.random.random(N)
z = np.cos(x) + 0.25 * np.random.random(N)
plt.figure(figsize=(6, 6), dpi=110)
ax = plt.axes(projection='3d')
ax.scatter3D(x, y, z, color='r')
ax.set_xlabel('x', fontsize=20, labelpad=20)
ax.set_ylabel('y', fontsize=20, labelpad=20)
ax.set_zlabel('z', fontsize=20, labelpad=20)
ax.set_box_aspect((2., 1.5, 1.2))
ax.view_init(10, 180) #设置3D图角度,10是仰角,180是方位角
plt.show()

14.5绘制3D三角形曲面图

14.5.1图像呈现

14.5.2绘图代码

import numpy as np  # 导入numpy库,numpy是一个用于处理数组和进行数值计算的强大Python库。
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块pyplot,用于绘制二维和三维图形。
from matplotlib import rcParams  # 从matplotlib库中导入rcParams,它用于自定义图形的各种属性。
# 定义一个字典config,该字典包含用于设置图形字体、大小和其他相关配置参数的键值对。
config = {
    "font.family": 'serif',  # 设置字体族为衬线字体。
    "font.size": 10.5,  # 设置字体大小为10.5。
    "mathtext.fontset": 'stix',  # 设置数学文本的字体集为'stix'。
    "font.serif": ['SimSun']  # 设置衬线字体为'SimSun'(即宋体)。
}
rcParams.update(config)  # 使用config字典中的配置参数更新matplotlib的全局配置参数rcParams。
# 设置配置参数,确保在图形中正常显示负号。
plt.rcParams['axes.unicode_minus'] = False
# 定义数据点的数量
N = 2000
# 设置随机数种子,确保每次生成的随机数序列相同
np.random.seed(124)
# 生成N个0到1之间的随机数,并乘以2π,用于生成极径r
r = 2 * np.pi * np.random.random(N)
# 生成N个0到1之间的随机数,并乘以20π,用于生成角度theta
theta = 20 * np.pi * np.random.random(N)
# 利用极坐标到直角坐标的转换公式计算x和y的坐标
xdata = np.ravel(r * np.sin(theta))
ydata = np.ravel(r * np.cos(theta))
# 根据xdata和ydata计算zdata的值
zdata = np.sin(xdata) + np.cos(ydata)
# 创建一个新的图形窗口,并设置其大小为15x6英寸,分辨率为110像素/英寸
fig = plt.figure(figsize=(15, 6), dpi=110)
# 调整子图之间的空白
plt.subplots_adjust(wspace=0)
# 创建一个3D坐标轴的子图,位置为1行2列中的第1个位置
ax1 = plt.subplot(121, projection='3d')
# 使用plot_trisurf方法绘制3D曲面,并使用'inferno'颜色映射
ax1.plot_trisurf(xdata, ydata, zdata, cmap='inferno')
# 设置x轴的标签
ax1.set_xlabel('x')
# 设置y轴的标签
ax1.set_ylabel('y')
# 设置z轴的标签
ax1.set_zlabel('z')
# 设置3D视角,其中Elevation为40°,Azimuth为100°
ax1.view_init(40, 100)
# 设置3D坐标轴的长宽比
ax1.set_box_aspect((4.5, 4.5, 1.5))
# 设置子图的标题
ax1.set_title('Elevation = 40°, Azimuth = 100°')
# 创建另一个3D坐标轴的子图,位置为1行2列中的第2个位置
ax2 = plt.subplot(122, projection='3d')
# 使用plot_trisurf方法绘制另一个3D曲面,并使用相同的颜色映射
ax2.plot_trisurf(xdata, ydata, zdata, cmap='inferno')
# 设置x轴的标签
ax2.set_xlabel('x')
# 设置y轴的标签
ax2.set_ylabel('y')
# 设置z轴的标签
ax2.set_zlabel('z')
# 设置3D视角,其中Elevation为20°,Azimuth为100°
ax2.view_init(20, 100)
# 设置3D坐标轴的长宽比
ax2.set_box_aspect((4.5, 4.5, 1.5))
# 设置子图的标题
ax2.set_title('Elevation = 20°, Azimuth = 100°')
# 显示图形窗口
plt.show()

14.6绘制3D等高线图

14.6.1图像呈现

14.6.2绘图代码

import numpy as np  # 导入numpy库,numpy是Python的一个强大的数值计算扩展程序库,支持大量的维度数组与矩阵运算。
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块pyplot,用于绘制二维和三维图形。
from matplotlib import rcParams  # 从matplotlib库中导入rcParams,rcParams是一个字典对象,用于处理matplotlib的全局配置参数。
# 定义一个字典config,该字典包含字体、大小和其他相关的配置参数,用于自定义图形的显示样式。
config = {
    "font.family": 'serif',  # 设置字体族为衬线字体。
    "font.size": 15,  # 设置字体大小为15。
    "mathtext.fontset": 'stix',  # 设置数学文本的字体集为'stix'。
    "font.serif": ['SimSun']  # 设置衬线字体为'SimSun'(即宋体)。
}
rcParams.update(config)  # 使用config字典中的配置参数更新matplotlib的全局配置参数rcParams。
plt.rcParams['axes.unicode_minus'] = False  # 设置配置参数,确保在图形中正常显示负号。
N = 100  # 定义数据点的数量,这里用于生成X、Y坐标和对应的Z值。
np.random.seed(3124)  # 设置随机数种子,确保每次生成的随机数序列相同,方便结果复现。
# 生成N个在-2到2之间均匀分布的数,然后加上随机噪声,生成x和y的坐标值。
x = np.linspace(-2, 2, N) + np.random.random(N)
y = np.linspace(-2, 2, N) + np.random.random(N)
# 使用meshgrid函数根据x和y坐标生成网格化的X和Y坐标矩阵。
X, Y = np.meshgrid(x, y)
# 根据X和Y坐标矩阵计算对应的Z值,这里Z是X的正弦值和Y的余弦值的和。
Z = np.sin(X) + np.cos(Y)
# 创建一个新的图形窗口,并设置其大小为9x6英寸,分辨率为110像素/英寸。
fig = plt.figure(figsize=(9, 6), dpi=110)
# 创建一个3D坐标轴的子图。
ax = plt.axes(projection='3d')
# 使用contour3D方法绘制等高线图,cmap='Spectral'表示使用Spectral颜色映射。
ax.contour3D(X, Y, Z, cmap='Spectral')
# 设置x轴的标签。
ax.set_xlabel('x')
# 设置y轴的标签。
ax.set_ylabel('y')
# 设置z轴的标签。
ax.set_zlabel('z')
# 设置3D坐标轴的长宽比。
ax.set_box_aspect((2, 2, 1))
# 设置3D视角,其中Elevation为60°,Azimuth为100°。
ax.view_init(60, 100)
# 设置子图的标题。
ax.set_title('Contour counts = Default, elevation = 60, azimuth = 100')
# 显示图形窗口。
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/449343.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Axure 单键快捷键 加快绘图速度 提高工作效率

画图类 R:绘制矩形 先点击空白页面,输入R即可绘制 L:绘制直线 先点击空白页面,输入L即可绘制,绘制的时候按住shift直线 O:绘制圆 先点击空白页面,输入O即可绘制,绘制的时候按…

目标检测数据集:手机顶盖焊缺陷检测数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

云服务器租用4核16G配置价格表,阿里云和腾讯云费用价格对比

4核16G服务器租用优惠价格26元1个月,腾讯云轻量4核16G12M服务器32元1个月、96元3个月、156元6个月、312元一年,阿腾云atengyun.com分享4核16服务器租用费用价格表,阿里云和腾讯云详细配置报价和性能参数表: 腾讯云4核16G服务器价…

Elastic Stack--08--SpringData框架

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringData[官网: https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…

导出微软浏览器收藏的网页,并查看网页保存的登录密码

导出微软Edge浏览器收藏夹(书签)的步骤如下: 打开Microsoft Edge浏览器。右键点击浏览器收藏栏上的任意位置或使用快捷键Ctrl Shift O打开收藏夹管理页面。在收藏夹管理页面中,通常你会看到右上角或菜单区域有一个“…”或者三…

24.第12届蓝桥杯省赛真题题解

A.空间&#xff08;100%&#xff09; 计算机存储单位计算 1TB2^10 GB 1GB2^10 MB 1MB2^10 KB 1KB2&10 B 1B8 bit(bit位二进制的最小的存储单位) #include <iostream> #include <cmath>using namespace std; //2^28B 2^2int main(){std::ios::sync_with_stdio…

Python 基于 OpenCV 视觉图像处理实战 之 背景知识

Python 基于 OpenCV 视觉图像处理实战 之 背景知识 目录 Python 基于 OpenCV 视觉图像处理实战 之 背景知识 一、简单介绍 二、人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09; 三、OpenCV 四、计算机视觉任务的主要类型 五、计算机视觉是通…

基于Python实现电商订单的数据分析

基于Python实现电商订单的数据分析 数据集&#xff1a;技术&#xff1a;功能&#xff1a;创新点&#xff1a;明确需求和目的&#xff1a; 数据集&#xff1a; 项目使用一家全球超市4年内的电商销售订单数据&#xff0c;数据集名为superstore_dataset2011-2015.csv。数据集共有…

Tomcat详解

1Tomcat安装 下载 Tomcat&#xff1a;首先&#xff0c;您需要从 Tomcat 官方网站&#xff08;http://tomcat.apache.org&#xff09;下载适合您系统的最新版本的 Tomcat 软件包。通常情况下&#xff0c;您会选择一个稳定的版本进行下载。解压缩&#xff1a;下载完成后&#xf…

Day34:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法

目录 Java-反射-Class对象类获取 Java-反射-Field成员变量类获取 Java-反射-Method成员方法类获取 Java-反射-Constructor构造方法类获取 Java-反射-不安全命令执行&反序列化链构造 思维导图 Java知识点 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;…

【三】安装k8s+kuboard, 拉取harbor镜像并执行yml文件

自己的配置 我在尊云上两百多买了三台2c4g的服务器&#xff0c;其实买两台就够了。 修改服务网卡掩码 确保几台服务器内网之间可以ping通 以尊云为例&#xff0c;vi /etc/sysconfig/network-scripts/ifcfg-eth1 修NETMASK值为255.0.0.0&#xff0c;重启服务器&#xff0c;尝试…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:NavDestination)

作为子页面的根容器&#xff0c;用于显示Navigation的内容区。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 该组件从API Version 11开始默认支持安全区避让特性(默认值为&#xff1a;expandSaf…

一文了解Cornerstone3D中窗宽窗位的3种设置场景及原理

&#x1f506; 引言 在使用Cornerstone3D渲染影像时&#xff0c;有一个常用功能“设置窗宽窗位&#xff08;windowWidth&windowLevel&#xff09;”&#xff0c;通过精确调整窗宽窗位&#xff0c;医生能够更清晰地区分各种组织&#xff0c;如区别软组织、骨骼、脑组织等。…

Unity中使用C#以【拟牛顿法】来求解非线性方程组

python科学计算包中有一个fsolve函数来求解非线性方程组&#xff0c;那么C#中用什么包和什么api与之对应呢&#xff1f;本文仅针对拟牛顿法求解过程展开MathNet包中对应API的考察和测试。 一、案例1 1、方程组 2、python的解法 &#xff08;1&#xff09;代码 from scipy.o…

大语言模型智能体简介

大语言模型&#xff08;LLM&#xff09;智能体&#xff0c;是一种利用大语言模型进行复杂任务执行的应用。这种智能体通过结合大语言模型与关键模块&#xff0c;如规划和记忆&#xff0c;来执行任务。构建这类智能体时&#xff0c;LLM充当着控制中心或“大脑”的角色&#xff0…

【webrtc】m122:BitrateProber 源码阅读与分析

pacing controller 需要 bitrate prober Pacing模块中存在一个BitrateProber prober_的成员变量,专门用来处理带宽探测 大神的分析也是基于最新版本webrtc的:ProbeController每次可能会生成多个探测源数据ProbeClusterConfig,其中每个源数据ProbeClusterConfig对应一个探测簇…

现代DevOps如何改变软件开发格局

在软件开发的早期&#xff0c;该过程通常是开发人员编写代码&#xff0c;再将其交给质量保证&#xff08;QA&#xff09;进行测试。这种瀑布开发方法可能会导致质量问题和延迟&#xff0c;因为问题是在周期后期发现的。 一、了解DevOps和测试左移 DevOps是Development和Opera…

深度学习_VGG_3

目标 知道VGG网络结构的特点能够利用VGG完成图像分类 2014年&#xff0c;牛津大学计算机视觉组&#xff08;Visual Geometry Group&#xff09;和Google DeepMind公司的研究员一起研发出了新的深度卷积神经网络&#xff1a;VGGNet&#xff0c;并取得了ILSVRC2014比赛分类项目…

某聘 zp__stoken__

前言: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018…

Shell正则表达式

目录 正则表达式的分类 基本组成部分 POSIX字符类 元字符 正则表达式的分类 基本的正则表达式&#xff08;Basic Regular Expression 又叫Basic RegEx 简称BREs&#xff09;扩展的正则表达式&#xff08;Extended Regular Expression 又叫Extended RegEx 简称EREs&#xf…