【深度学习】 Python 和 NumPy 系列教程(十八):Matplotlib详解:2、3d绘图类型(4)3D曲面图(3D Surface Plot)

2023-09-14 22:09:28

目录

 一、前言

二、实验环境

三、Matplotlib详解

1、2d绘图类型

2、3d绘图类型

0. 设置中文字体

1. 3D线框图(3D Line Plot)

2. 3D散点图(3D Scatter Plot)

3. 3D条形图(3D Bar Plot)

4. 3D曲面图(3D Surface Plot)


 一、前言

        Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

        Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组创建、数组操作、数组数学、广播
  • Matplotlib:2d绘图、3d绘图、图表自定义、多子图和布局、图表自定义、多子图和布局
  • IPython:创建笔记本、典型工作流程

二、实验环境

matplotlib3.5.3
numpy1.21.6
python3.7.16
  • 运行下述命令检查Python版本
 python --version 
  • 运行下述代码检查Python、NumPy、Matplotlib版本
import sys
import numpy as np
import matplotlib

print("Python 版本:", sys.version)
print("NumPy 版本:", np.__version__)
print("matplotlib 版本:", matplotlib.__version__)

三、Matplotlib详解

        Matplotlib是一个用于创建数据可视化的Python库。它提供了广泛的绘图选项,能够生成各种类型的图表、图形和可视化效果。下面是Matplotlib的一些主要功能:

  1. 绘图风格和类型:Matplotlib支持各种绘图风格和类型,包括线图、散点图、柱状图、饼图、等高线图、3D图等,可以根据需要选择适合的图表类型来展示和分析数据。

  2. 数据可视化:Matplotlib使得将数据转化为可视化表示变得简单,可以使用Matplotlib绘制图表来展示数据的分布、趋势、关系等,这有助于更好地理解数据和发现潜在的模式和关联。

  3. 图表自定义:Matplotlib提供了丰富的图表自定义选项,可以调整图表的标题、标签、坐标轴、线条样式、颜色等。这使得您能够创建符合特定需求和品味的高质量图表。

  4. 多子图和布局:Matplotlib允许您在单个图像中创建多个子图,以便同时展示多个相关的图表或数据视图。您可以自定义子图的布局和排列,以满足特定的展示需求。

  5. 导出图像:Matplotlib支持将图像导出为多种格式,包括PNG、JPEG、PDF、SVG等。这使得您可以方便地将生成的图表保存为文件,或嵌入到文档、报告和演示文稿中。

        无论是进行科学研究、数据分析、报告撰写还是可视化展示,Matplotlib都是一个强大而灵活的工具。它广泛应用于各个领域,如数据科学、机器学习、金融分析、工程可视化等。

1、2d绘图类型

2d绘图(上):折线图、散点图、柱状图、直方图、饼图_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132872575?spm=1001.2014.3001.5501https://blog.csdn.net/m0_63834988/article/details/132872575?spm=1001.2014.3001.5501

2d绘图(下):箱线图、热力图、面积图、等高线图、极坐标图_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132890656?spm=1001.2014.3001.5501https://blog.csdn.net/m0_63834988/article/details/132890656?spm=1001.2014.3001.5501

2、3d绘图类型

0. 设置中文字体

import matplotlib

matplotlib.rcParams['font.family'] = 'Microsoft YaHei'  # 设置为微软雅黑字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']     # 设置中文字体为黑体

        若不进行该设置,会报错字体缺失

1. 3D线框图(3D Line Plot)

3d绘图类型(1):线框图(Wireframe Plot)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132890293?spm=1001.2014.3001.5502

2. 3D散点图(3D Scatter Plot)

3d绘图类型(2)3D散点图(3D Scatter Plot)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132891434?spm=1001.2014.3001.5502

3. 3D条形图(3D Bar Plot)

3d绘图类型(3)3D条形图(3D Bar Plot)_QomolangmaH的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/132890907?spm=1001.2014.3001.5502

4. 3D曲面图(3D Surface Plot)

import matplotlib.pyplot as plt
import numpy as np

# 数据准备
x = np.linspace(-5, 5, 100)  # x轴数据范围
y = np.linspace(-5, 5, 100)  # y轴数据范围
x_mesh, y_mesh = np.meshgrid(x, y)  # 创建网格
z = np.sin(np.sqrt(x_mesh**2 + y_mesh**2))  # 曲面高度

# 创建3D图形对象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制3D曲面图
ax.plot_surface(x_mesh, y_mesh, z, cmap='viridis')

# 设置坐标轴标签
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

# 显示图形
plt.show()

  • xy数组分别表示曲面图的x和y轴数据范围。通过使用np.linspace函数在指定范围内生成100个均匀分布的数据点。
  • 我们创建了一个3D图形对象,并将其添加到子图中。
  • 使用ax.plot_surface函数绘制了3D曲面图
    • x_meshy_meshz参数分别表示曲面图的x、y和z坐标数据。
    • cmap='viridis'参数指定了颜色映射方案(可以根据需要选择其他颜色映射)。
  • 使用ax.set_xlabelax.set_ylabelax.set_zlabel函数设置了坐标轴的标签。

  

更多推荐

VIOOVI干货分享:什么是SOP?它的六要素是什么?

什么是SOP,SOP就是标准化的作业程序。它以文档的形式,详细的描述操作人员在生产操作过程中的操作步骤和应当遵守的事项;是操作人员的操作说明书;也是检查员指导工作的依据。SOP的六要素是:物料名称和数量:生产之前,必须确认本工作岗位所需材料与准备的材料是否一致,数量是否正确,材料是否经过IQC检验。只有在所有确认无误之

Dubbo学习(一)——dubbo学习背景

文章目录前言分布式基础理论什么是分布式系统发展演变ORMMVCRPCSOARPC(远程调用)什么是RPCRPC工作原理为什么RPC要用到DubboDubbo的优势高性能可扩展性高可靠性监控和管理使用示例总结前言分布式基础理论什么是分布式系统分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统分布式系

【每日一题Day333】LC2603收集树中金币 | 拓扑排序

收集树中金币【LC2603】给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,其中coins[i]可能为0也可能为1,1表示节点i处有一个金币。一开始,你需

5.11.Webrtc接口的设计原理

在上节课中呢,我向你介绍了webrtc的接口宏,那有很多同学会产生疑问啊,那觉得webrtc为什么要把接口设计的这么复杂?还非要通过宏来实现一个代理类,再通过代理类来调用到webrtc内部。那为什么要这么设计呢?实际上它的这样一种设计啊,它是有一定理论的,那下面呢,我们就来详细看一下webrtc为什么要这么做?那这张图

Redis——Java客户端配置

概要由于Redis服务器在官网公开了RESP协议,因此第三方可以通过这个协议来实现和Redis服务器通信的客户端程序,而具体的通信逻辑也不需要我们去实现,只需要导入大佬的库即可jedis就是封装了RESP协议,提供了一组api供我们使用导入依赖创建一个maven项目,然后导入下面这个jedis依赖<!--https:/

1.测试 —— 答疑篇

什么是软件测试:软件测试是不是就是找bug?软件测试就是证明软件不存在错误的过程软件测试就是为了证明程序能够正确运行刚新买来一部手机,我们要干什么?一场考试,做完一遍题目之后,进行一遍检查,就是在"测试"买一台电视,安装好之后打开试试看能不能正常使用,也是在"测试"概念:验证软件功能是否满足用户的需求。1979年,Gl

【JavaEE】多线程(一)

多线程(一)文章目录多线程(一)进程操作系统进程PCB属性进程的状态进程的优先级进程的上下文CPU寄存器进程的记账信息虚拟地址空间线程线程与进程的区别Java进行多线程编程在了解多线程之前,我们先聊聊进程进程而了解进程前,我们还需聊聊操作系统~操作系统简单来理解就是搞管理的软件。对下:管理好各种硬件设备对上:要给应用程

什么是HTML5中的Web存储API,包括LocalStorage和SessionStorage?它们的区别是什么?

聚沙成塔·每天进步一点点⭐专栏简介⭐Web存储API和区别⭐LocalStorage(本地存储)⭐SessionStorage(会话存储)⭐区别⭐写在最后⭐专栏简介前端入门之旅:探索Web开发的奇妙世界欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的

机器学习——贝叶斯(三种分布)/鸢尾花分类分界图/文本分类应用

0、前言:机器学习中的贝叶斯的理论基础是数学当中的贝叶斯公式。这篇博客强调使用方法,至于理论未作深究。机器学习中三种类型的贝叶斯公式:高斯分布(多分类)、多项式分布(文本分类)、伯努利分布(二分类任务)贝叶斯算法优点:对小规模数据表现好,能处理多分类任务,常用于文本分类。缺点:只能用于分类问题。1、高斯分布的贝叶斯算法

长安汽车:基于云器Lakehouse一体化数据平台,建立智能互联时代的领先优势丨案例研究

长安汽车智能化研究院是中国长安汽车集团有限责任公司旗下专注于汽车智能化技术研究和创新的研发机构。其愿景是通过持续创新和技术突破,实现汽车智能驾驶、智能网联和智能交通的全面发展,提供更安全、更便捷、更智能的出行体验,并成为中国汽车智能化领域的领军企业。智能化是汽车工业发展近百年来对汽车功能的一次重新定义,它旨在利用大数据

利用python工具提取多个word中的图片和表格

1.前言由于工作因素,经常要对多个文档内容进行查重,文字类可以借助查重工具辅助,但图片和表格只能依靠鼠标滚轮还有笔者的打工眼。久而久之,眼睛废了,肩颈也吃不消了(-.-)。于是乎,就想用脚本批量导出,从而提高效率。笔者非软件专业,所以只能请ChatGPT当导师了,经过多次修改,总算达到了预期效果。大佬们如果有更好的办法

热文推荐