当前位置: 首页 > news >正文

Matplotlib核心:掌握Figure与Axes

详细介绍Figure和Axes(基于Matplotlib)
在这里插入图片描述


🌵文章目录🌵

  • 🌳引言🌳
  • 🌳 一、Figure(图形)🌳
    • 🍁1. 创建Figure🍁
    • 🍁2. 添加Axes🍁
  • 🌳二、Axes(坐标轴)🌳
    • 🍁1. 创建Axes🍁
    • 🍁2. 绘制图表🍁
    • 🍁3. 设置Axes属性🍁
  • 🌳三、Figure和Axes的区别与联系🌳
  • 🌳四、进阶用法与技巧🌳
    • 🍁1. 多子图布局🍁
    • 🍁2. 共享坐标轴🍁
    • 🍁3. 保存和导出图表🍁
  • 🌳五、总结与展望🌳
  • 🌳结尾🌳

🌳引言🌳

在数据分析和可视化领域,Python的Matplotlib库因其强大的功能和广泛的应用而备受推崇。它为用户提供了创建多种类型图表的能力,如折线图、柱状图、散点图等,这些图表对于数据理解和展示至关重要。在Matplotlib库中,Figure和Axes是两个核心概念,它们共同构成了绘图的基础框架。本文将详细解读这两个概念,并探讨它们在Matplotlib中的实际应用,帮助读者更好地掌握数据可视化的关键要素。

🌳 一、Figure(图形)🌳

Figure在Matplotlib中代表了一个完整的图表,它包含了所有的绘图元素,如Axes、标题、图例等。我们可以将Figure看作是一个容器,其中包含了用于绘制图表的所有元素

🍁1. 创建Figure🍁

在Matplotlib中,我们可以使用plt.figure()函数来创建一个新的Figure对象。例如:

import matplotlib.pyplot as pltfig = plt.figure()

这将创建一个默认的Figure对象。我们还可以通过传递参数来自定义Figure的大小、DPI等属性。例如:

fig = plt.figure(figsize=(10, 5), dpi=100)

这将创建一个宽度为10英寸、高度为5英寸、DPI为100的Figure对象。

🍁2. 添加Axes🍁

一旦我们创建了Figure对象,就可以向其添加Axes对象。Axes代表了一个坐标轴系统,它包含了数据、坐标轴标签、标题等。我们可以使用add_subplot()方法来向Figure中添加Axes。例如:

ax = fig.add_subplot(111)

这将在Figure中添加一个1x1的网格中的第一个子图。参数111表示网格的行数、列数和子图的索引。在这个例子中,我们创建了一个单一的Axes对象,占据了整个Figure的空间。

完整代码如下:

import matplotlib.pyplot as pltfig = plt.figure(figsize=(10, 5), dpi=100)
ax = fig.add_subplot(111)
plt.show()

运行结果如下图所示:

🌳二、Axes(坐标轴)🌳

Axes是Matplotlib中的另一个核心概念,它代表了一个坐标轴系统,用于显示数据和进行绘图。每个Axes对象一般都包含了一个X轴和一个Y轴,以及与之关联的数据和标签。

🍁1. 创建Axes🍁

如上所述,我们可以通过向Figure对象添加子图来创建Axes对象。除了使用add_subplot()方法外,我们还可以使用add_axes()方法来创建Axes对象,并指定其在Figure中的位置和大小。例如:

ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])

这将在Figure上创建一个占据了大部分空间的Axes对象。参数[0.1, 0.1, 0.8, 0.8]的原型是[left, bottom, width, height],其中 leftbottomAxes 左下角相对于 Figure 边缘的坐标(以小数形式表示,例如 0 是左/底部边缘,1 是右/顶部边缘),widthheightAxes 的宽度和高度(也是以小数形式表示)。

完整代码如下:

import matplotlib.pyplot as pltfig = plt.figure(figsize=(10, 5), dpi=100)
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
plt.show()

运行结果如下图所示:

在这里插入图片描述

🍁2. 绘制图表🍁

一旦我们有了Axes对象,就可以在其上进行绘图操作。Matplotlib提供了丰富的绘图函数,如plot()scatter()bar()等,用于在Axes上绘制各种图表。例如,要在Axes上绘制一个简单的折线图,我们可以这样做:

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
ax.plot(x, y)

这将在Axes上绘制一个由点(1, 2)(2, 3)(3, 5)(4, 7)(5, 11)组成的折线图。

完整代码如下:

import matplotlib.pyplot as pltfig = plt.figure(figsize=(10, 5), dpi=100)
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
ax.plot(x, y)
plt.show()

运行结果如下图所示:

在这里插入图片描述

🍁3. 设置Axes属性🍁

除了绘制图表外,我们还可以设置Axes的各种属性,如标题、坐标轴标签、刻度等。Matplotlib提供了丰富的函数来设置这些属性。例如:

ax.set_title('Simple Line Plot')
ax.set_xlabel('X-axis Label')
ax.set_ylabel('Y-axis Label')
ax.set_xlim([0, 6])
ax.set_ylim([0, 12])

这些函数分别用于设置Axes的标题、X轴标签、Y轴标签、X轴范围和Y轴范围。

完整代码如下:

import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]fig = plt.figure(figsize=(10, 5), dpi=100)
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y)
ax.set_title('Simple Line Plot')
ax.set_xlabel('X-axis Label')
ax.set_ylabel('Y-axis Label')
ax.set_xlim([0, 6])
ax.set_ylim([0, 12])
plt.show()

运行结果如下图所示:

在这里插入图片描述

🌳三、Figure和Axes的区别与联系🌳

FigureAxes
定义Figure代表整个图表窗口或画布,它是一个容器,可以包含多个子图(Axes)。AxesFigure中的一个子图,它拥有自己的坐标轴、刻度、标签等,用于绘制具体的图表。
作用提供了一个绘制图表的区域,可以容纳一个或多个AxesFigure中绘制具体的图表,如折线图、柱状图等。
数量一个Figure可以包含多个Axes,可通过add_subplot方法添加。一个Figure中可以有多个Axes,但每个Axes都是独立的。
属性包含如尺寸、DPI(每英寸的点数)、背景色等属性。包含如坐标轴范围、刻度、标签、标题等属性。
层级关系AxesFigure的子对象,每个Axes都是Figure的一个部分。AxesFigure的直接子对象,与Figure有直接的层级关系。
绘制关系负责整体的布局和呈现,是图表的容器。Figure的指定位置进行绘制,展示具体的图表内容。

联系

  • AxesFigure的组成部分,每个Axes都在Figure的指定位置进行绘制。
  • FigureAxes共同构成了图表的基本结构,其中Figure提供了绘制的整体环境,而Axes则负责具体的图表内容展示。

区别

  • Figure是一个更高级别的概念,它代表了整个图表窗口或画布,而Axes则是Figure中的一个具体子图。
  • Figure主要负责整体的布局和呈现,而Axes则负责具体的图表绘制和内容展示。
  • 一个Figure可以包含多个Axes,而每个Axes都是独立的,拥有自己的坐标轴、刻度、标签等。

🌳四、进阶用法与技巧🌳

🍁1. 多子图布局🍁

Matplotlib允许在一个Figure中创建多个Axes,通过网格布局或自由布局的方式来实现多子图展示。例如,使用subplot2gridGridSpec可以创建复杂的子图布局。

"""  
绘制正弦、余弦以及它们的和在一个 2x2 的网格布局中。  
"""  
import matplotlib.pyplot as plt  
import numpy as np  # 创建一个 2x2 的网格布局  
fig = plt.figure(figsize=(10, 8))  
gs = fig.add_gridspec(2, 2)  # 在第一行,创建一个跨越两列的 Axes  
ax1 = fig.add_subplot(gs[0, :])  
# 在第二行,第一列创建一个 Axes  
ax2 = fig.add_subplot(gs[1, 0])  
# 在第二行,第二列创建一个 Axes  
ax3 = fig.add_subplot(gs[1, 1])  # 生成一个从 0 到 2π,包含 100 个点的等差数列  
x = np.linspace(0, 2 * np.pi, 100)  
# 计算正弦值  
y1 = np.sin(x)  
# 计算余弦值  
y2 = np.cos(x)  # 在 ax1 上绘制红色的正弦曲线,并设置标题为 'Sine'  
ax1.plot(x, y1, 'r')  
ax1.set_title('Sine')  # 在 ax2 上绘制蓝色的余弦曲线,并设置标题为 'Cosine'  
ax2.plot(x, y2, 'b')  
ax2.set_title('Cosine')  # 在 ax3 上绘制绿色的正弦和余弦的和的曲线,并设置标题为 'Sine + Cosine'  
ax3.plot(x, y1 + y2, 'g')  
ax3.set_title('Sine + Cosine')  # 显示图形  
plt.show()

运行结果如下图所示:

在这里插入图片描述

🍁2. 共享坐标轴🍁

有时我们可能希望多个图表共享同一个X轴或Y轴。Matplotlib提供了sharexsharey参数来实现这一功能。

"""  
绘制正弦和余弦函数图像
"""
import matplotlib.pyplot as plt
import numpy as np# 生成一个从0到2π包含100个点的等差数列
x = np.linspace(0, 2 * np.pi, 100)# 计算正弦和余弦值
y1 = np.sin(x)
y2 = np.cos(x)# 创建一个2行1列的子图布局,共享x轴
fig, axs = plt.subplots(2, 1, sharex=True)# 在第一个子图上绘制正弦函数图像,并设置y轴标签为'Sine'
axs[0].plot(x, y1)
axs[0].set_ylabel('Sine')# 在第二个子图上绘制余弦函数图像,并设置y轴标签为'Cosine'
axs[1].plot(x, y2)
axs[1].set_ylabel('Cosine')# 调整子图之间的间距
fig.tight_layout()# 显示图像
plt.show()

运行结果如下图所示:

在这里插入图片描述

🍁3. 保存和导出图表🍁

创建好图表后,我们可以使用savefig方法将其保存为图片文件,支持多种格式如PNG、PDF、SVG等。

plt.savefig('my_plot.png')  # 保存为PNG图片

🌳五、总结与展望🌳

通过本文的详细介绍,我们对Matplotlib中的Figure和Axes有了更加深入的理解。从基础的创建和设置,到进阶的多子图布局,Matplotlib提供了丰富的功能和灵活的接口,使得数据可视化变得简单而高效。未来,随着数据科学和可视化技术的不断发展,我们期待Matplotlib能够继续带来更多创新和便利的功能。

希望本文能够帮助读者更好地掌握Matplotlib中的Figure和Axes,并在实际的数据分析和可视化工作中发挥它们的强大作用。


🌳结尾🌳

亲爱的读者,首先感谢抽出宝贵的时间来阅读我们的博客。我们真诚地欢迎您留下评论和意见💬
俗话说,当局者迷,旁观者清。的客观视角对于我们发现博文的不足、提升内容质量起着不可替代的作用。
如果博文给您带来了些许帮助,那么,希望能为我们点个免费的赞👍👍/收藏👇👇,您的支持和鼓励👏👏是我们持续创作✍️✍️的动力
我们会持续努力创作✍️✍️,并不断优化博文质量👨‍💻👨‍💻,只为给带来更佳的阅读体验。
如果有任何疑问或建议,请随时在评论区留言,我们将竭诚为你解答~
愿我们共同成长🌱🌳,共享智慧的果实🍎🍏!


万分感谢🙏🙏点赞👍👍、收藏⭐🌟、评论💬🗯️、关注❤️💚~

相关文章:

Matplotlib核心:掌握Figure与Axes

详细介绍Figure和Axes(基于Matplotlib) 🌵文章目录🌵 🌳引言🌳🌳 一、Figure(图形)🌳🍁1. 创建Figure🍁🍁2. 添加Axes&am…...

问题:A注册会计师必须在期中实施实质性程序的情形是()。 #学习方法#其他

问题:A注册会计师必须在期中实施实质性程序的情形是()。 A.甲公司整体控制环境不佳 B.将期中实质性程序所获证据与期末数据进行比较 C.评估的认定层次重大错报风险很高 D.没有把握通过在期中…...

C#系列-C#EF框架返回单行记录(24)

在C#中&#xff0c;使用Entity Framework (EF)框架时&#xff0c;如果你想要执行一个查询并返回单行记录&#xff0c;你可以使用SingleOrDefault、FirstOrDefault、Single或First方法。这些方法适用于DbSet<T>对象&#xff0c;它们可以执行查询并返回单个实体或默认值&am…...

【PyTorch】张量(Tensor)的生成

PyTorch深度学习总结 第一章 Pytorch中张量(Tensor)的生成 文章目录 PyTorch深度学习总结一、什么是PyTorch&#xff1f;二、张量(Tensor)1、张量的数据类型2、张量生成和信息获取 总结 一、什么是PyTorch&#xff1f; PyTorch是一个开源的深度学习框架&#xff0c;基于Python…...

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Viterbi译码原理

目录 一、引言 二、Viterbi译码的基本原理 2.1 卷积码与网格图 2.2 Viterbi算法的核心思想 2.3 路径度量与状态转移 三、Viterbi译码算法工作原理详解 3.1 算法流程 3.2 关键步骤 3.3 译码算法举例 3.4 性能特点 四、Viterbi译码的应用场景 4.1 移动通信系统 4.2 卫…...

矩阵在计算机图像处理中的应用

矩阵在计算机图像处理中是非常核心的概念&#xff0c;因为它们为表示和操作图像数据提供了一种非常方便和强大的方式。以下是矩阵在计算机图像处理中的一些关键作用&#xff1a; 图像表示&#xff1a;在计算机中&#xff0c;图像通常被表示为像素矩阵&#xff0c;也就是二维数组…...

Java实现教学资源共享平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…...

Spring Boot(六十五):使用 ant.jar 执行 SQL 脚本文件

ant用处,主要用在编译java文件,打包,部署。打包:jar,war,ear包等。ant在项目中有很重要的作用。今天我们讲解它的另一个作用:执行 SQL 脚本文件。 1 引入依赖 <dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId&g…...

161基于matlab的快速谱峭度方法

基于matlab的快速谱峭度方法&#xff0c;选择信号峭度最大的频段进行滤波&#xff0c;对滤波好信号进行包络谱分析。输出快速谱峭度及包络谱结果。程序已调通&#xff0c;可直接运行。 161 信号处理 快速谱峭度 包络谱分析 (xiaohongshu.com)...

CTFshow-WEB入门-信息搜集

web1&#xff08;查看注释1&#xff09; wp 右键查看源代码即可找到flag web2&#xff08;查看注释2&#xff09; wp 【CtrlU】快捷键查看源代码即可找到flag web3&#xff08;抓包与重发包&#xff09; wp 抓包后重新发包&#xff0c;在响应包中找到flag web4&#xff08;robo…...

django密码管理器(创建项目)

目录 创建项目 安装django 创建项目(django-admin) 创建管理员用户 创建数据库 创建项目 新建一个项目文件夹&#xff0c;如"密码管理器" 安装django 要先安装pip,pip安装地址:pypi.org、pypi.python.org、cheeseshop.python.org pip install django 创建项…...

Centos7之Oracle12c安装与远程连接配置

Centos7之Oracle12c安装与远程连接配置 文章目录 Centos7之Oracle12c安装与远程连接配置1.Oracle官网2. Centos7中安装Oracle12c(12.2.0.1.0)2.1 Introduction (介绍)2.2 Prerequisites(先决条件)2.3 Installation Steps(安装步骤)2.4 Oracle Installer Screens(Oracle安装程序…...

CVE-2022-25578 漏洞复现

CVE-2022-25578 路由/admin/admin.php是后台&#xff0c;登录账号和密码默认是admin、tao&#xff0c;选择文件管理。 是否还记得文件上传中的.htaccess配置文件绕过发&#xff0c;在这个文件中加入一句AddType application/x-httpd-php .jpg&#xff0c;将所有jpg文件当作php…...

Ubuntu22.04安装黑屏(进入U盘安装引导时 和 安装完成后)

一&#xff1a;进入U盘安转引导时黑屏 问题描述&#xff1a;选择’try or install ubuntu’&#xff0c;开始安装&#xff0c;出现黑屏。 解决方法&#xff1a;&#xff08;可行&#xff09; 安装时&#xff0c;先选择" try or install ubuntu", 此时不要按enter&a…...

一、DataX简介

DataX简介 一、什么是DataX二、DataX设计三、支持的数据源四、框架设计五、运行原理六、DataX和Sqoop对比 一、什么是DataX DataX是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库&#xff08;MySQL、Oracle等&#xff09;、HDFS、Hive、OD…...

直播app开发,技术驱动的实时互动新纪元

随着互联网技术的快速发展&#xff0c;直播已成为我们日常生活的重要组成部分。从娱乐、教育到商业活动&#xff0c;直播的广泛应用正在改变着我们的生活和工作方式。在这一变革中&#xff0c;直播开发扮演着至关重要的角色。本文将探讨直播开发的核心理念、技术挑战以及未来的…...

Apache POI的介绍以及使用示例

Apache POI 是一套开源的 Java 库&#xff0c;用于读取和写入 Microsoft Office 文档格式&#xff0c;如 Excel、Word 和 PowerPoint。Spring Boot 是一个流行的 Java 应用程序框架&#xff0c;用于简化 Spring 应用的开发和部署。将 Apache POI 与 Spring Boot 结合使用&#…...

npm config set registry https://registry.npm.taobao.org 这个设置了默认的镜像源之后如何恢复默认的镜像源

要恢复npm默认的镜像源&#xff0c;你可以使用以下命令将registry设置回npm的官方源&#xff1a; npm config set registry https://registry.npmjs.org/这个命令会修改你的全局npm配置&#xff0c;将包的下载源改回npm官方的源。这样做之后&#xff0c;任何后续的npm install…...

算法沉淀——位运算(leetcode真题剖析)

算法沉淀——位运算 常用位运算总结1.基础位运算2.确定一个数中第x位是0还是13.将一个数的第x位改成14.将一个数的第x位改成05.位图6.提取一个数最右边的17.删掉一个数最右边的18.异或运算9.基础例题 力扣题目讲解01.面试题 01.01. 判定字符是否唯一02.丢失的数字03.两整数之和…...

React18原理: 再聊Fiber架构下的时间分片

时间分片 react的任务可以被打断&#xff0c;其实就是基于时间分片的人眼最高能识别的帧数不超过30帧&#xff0c;电影的帧数差不多是在24浏览器的帧率一般来说是60帧&#xff0c;也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染&#xff…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...