matplotlib 基础_子图创建

article/2025/9/22 9:57:31

目录

      • 创建Axes方法
        • 1 、 add_subplot 函数:快速创建
          • 1.1 设置不等尺寸的子图
        • 2、add_axes 函数:自由设置子图的位置、大小
        • 3、指定子图空间:当子图大小成倍数时
      • 一张图理解matplotlib

Figure 和 Axes
Figure 就是图片,一个完整的图片,而 Axes 直译为坐标轴,这里我们不妨理解为子图,这样两者的关系就比较明确了:一个 Figure 是可以包含一个或多个 Axes 的。

import matplotlib.pyplot as plt # 导入库
from matplotlib import rcParams
rcParams.update({'figure.autolayout': True}) # 设为自动布局,避免标签被剪裁

通过 pyplt 模块的 figure 函数来创建一个 Figure 对象

matplotlib.pyplot.figure(figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)# figsize: 传入一个“(float,float)”格式字符串,默认为 (6.4,4.8),分别为以英寸为单位的宽和高。
# dpi:float 格式,像素分辨率。
# facecolor:背景色。
# edgecolor:边框颜色。
# frameon:默认为 True,即允许绘制边框。

创建Axes方法

1 、 add_subplot 函数:快速创建

使用指定行列数的方式来创建子图,排列顺序从左到右、从上到下。

fig = plt.figure() # 创建figure对象
fig.add_subplot(231); # 这里用 231 或者 2,3,1 都可以。第一个数字指定要创建具有几行子图的规格,第二个数字指列数的规格,第三个数字指对全部子图的行列从左往右,从上往下的第几个子图

在这里插入图片描述

fig = plt.figure()
ax1 = fig.add_subplot(231) # 创建2行3列排布的第1个子图

在这里插入图片描述

fig = plt.figure()
ax1 = fig.add_subplot(231) # 创建2行3列排布的第1个子图
fig.add_subplot(232, frameon=False); # 创建2行3列排布的第2个子图,不添加边框

在这里插入图片描述

fig = plt.figure()
ax1 = fig.add_subplot(231)  # 创建2行3列排布的第1个子图
fig.add_subplot(232, frameon=False)  # 创建2行3列排布的第2个子图,不添加边框
fig.add_subplot(233, projection='polar'); # 创建2行3列排布的第3个子图,使用极坐标系

在这里插入图片描述

fig = plt.figure()
ax1 = fig.add_subplot(231)  # 创建2行3列排布的第1个子图
fig.add_subplot(232, frameon=False)  # 创建2行3列排布的第2个子图,不添加边框
fig.add_subplot(233, projection='polar')  # 创建2行3列排布的第3个子图,使用极坐标系
fig.add_subplot(234, facecolor="red");  # 创建2行3列排布的第4个子图,使用红色背景

在这里插入图片描述

1.1 设置不等尺寸的子图
fig = plt.figure()
#创建2行2列排布的第一个图
fig.add_subplot(221)
plt.show() 

在这里插入图片描述

fig = plt.figure()
# 创建2行2列排布的第一个图
fig.add_subplot(221)
# 新增:创建2行2列排布的第二个图
fig.add_subplot(222)
plt.show()

在这里插入图片描述

fig = plt.figure()
# 创建2行2列排布的第一个图
ax1 = fig.add_subplot(221)
# 创建2行2列排布的第二个图
ax2 = fig.add_subplot(222)
# 新增:创建2行1列排布的第二个图
ax3 = fig.add_subplot(212)
plt.show()

在这里插入图片描述

可以看到,我们这里并不一定使全部的子图要遵循相同的排列,但是子图的长宽比例是相对确定的

2、add_axes 函数:自由设置子图的位置、大小

left = 0.1 # 子图左下角的x坐标
below = 0.1 # 子图左下角的y坐标  左下角坐标可以设置为(0,0)
wide = 0.4 # 子图的宽度
high = 0.3 # 子图高度
rect = left, below, wide, high
fig = plt.figure()
fig.set_tight_layout(False)
fig.add_axes(rect);

在这里插入图片描述

add_subplot 方式创建时较为便捷 ✅,但缺点是不容易灵活掌握每个子图的大小,尤其是在用于多子图(大小不统一)拼凑时不容易调整 ❌。
add_axes 创建子图则没有这一缺点,可以自由设置每个子图的位置和大小 ✅,缺点是需要反复调整子图尺寸位置参数 ❌。

3、指定子图空间:当子图大小成倍数时

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
fig = plt.figure()
# 将figure划分为3×3的空间,所以相当于将空间变为了一个(3,3)的数组
gs = GridSpec(3, 3, figure=fig)
# 第一个子图占有第一行的全部空间
ax1 = fig.add_subplot(gs[0, :])
# 第二个子图占有第二行,从0到倒数第二列的空间
ax2 = fig.add_subplot(gs[1, :-1])

在这里插入图片描述

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
fig = plt.figure()
# 将figure划分为3×3的空间,所以相当于将空间变为了一个(3,3)的数组
gs = GridSpec(3, 3, figure=fig)
# 第一个子图占有第一行的全部空间
ax1 = fig.add_subplot(gs[0, :])
# 第二个子图占有第二行,从0到倒数第二列的空间
ax2 = fig.add_subplot(gs[1, :-1])
# 新增:第三个子图占有第三行和第三行最后一列的空间
ax3 = fig.add_subplot(gs[1:, -1])

在这里插入图片描述

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
fig = plt.figure()
# 将figure划分为3×3的空间,所以相当于将空间变为了一个(3,3)的数组
gs = GridSpec(3, 3, figure=fig)
# 第一个子图占有第一行的全部空间
ax1 = fig.add_subplot(gs[0, :])
# 第二个子图占有第二行,从0到倒数第二列的空间
ax2 = fig.add_subplot(gs[1, :-1])
# 第三个子图占有第三行和第三行最后一列的空间
ax3 = fig.add_subplot(gs[1:, -1])
# 新增:第四个子图占有最后一行第一列的空间
ax4 = fig.add_subplot(gs[-1, 0])

在这里插入图片描述

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
fig = plt.figure()
# 将figure划分为3×3的空间,所以相当于将空间变为了一个(3,3)的数组
gs = GridSpec(3, 3, figure=fig)
# 第一个子图占有第一行的全部空间
ax1 = fig.add_subplot(gs[0, :])
# 第二个子图占有第二行,从0到倒数第二列的空间
ax2 = fig.add_subplot(gs[1, :-1])
# 第三个子图占有第三行和第三行最后一列的空间
ax3 = fig.add_subplot(gs[1:, -1])
# 第四个子图占有最后一行第一列的空间
ax4 = fig.add_subplot(gs[-1, 0])
# 新增:第五个子图占有最后一行第二列的空间
ax5 = fig.add_subplot(gs[-1, -2])

在这里插入图片描述

一张图理解matplotlib

在这里插入图片描述


http://chatgpt.dhexx.cn/article/raOl4gEt.shtml

相关文章

plt.plot画子图时,子图变形,调整子图大小

在画图时候遇到的记录一下 希望可以帮到遇到相同问题的伙伴儿~~ 本来是这样: 本来代码: plt.subplot(1, 2, 1)plt.rcParams[font.sans-serif] [SimHei]plt.rcParams[axes.unicode_minus] Falseplt.rcParams[figure.dpi] 1080plt.rcParams[figure.fi…

关于图论中导出子图的概念

关于图论中导出子图的概念 1、导出子图 A subgraph H is called an induced subgraph of X if for any a , b ∈ E ( H ) a,b \in E(H) a,b∈E(H) if and only if a , b ∈ E ( X ) a,b \in E(X) a,b∈E(X). 2、点导出子图 设S是V(G)的子集,以S为点集&#xf…

极大连通子图与极小连通子图

无向图 连通图: 在无向图中,若从定点V1到V2有路径,则称顶点V1和V2是连通的。如果图中任意一对顶点都是连通的,则称此图是连通图。(连通的无向图)极大连通子图: 1.连通图只有一个极大连通子图&a…

python数据可视化玩转Matplotlib subplot子图操作,四个子图(一包四),三个子图,子图拉伸

目录 一、创建子图 1.1 下图是绘制的子图: 1.2 代码释义: 二、绘制子图 2.1 代码引入 2.2 图形绘制 三、子图布局 3.1 子图布局说明 四、子图大小 4.1 子图大小调整 五、子图间距 5.1 子图代码调整 六、子图位置 6.1 代码引入 6.2 完整代码…

极大连通子图与极小连通子图(带图讲解)

因为本人对于这一块知识存在疑惑,在学习了相关知识后将自己的理解分享给大家,如有错误,欢迎纠正。 首先我们先明确一下,极小连通子图与极大连通子图是在无向图中进行讨论的。 极大强连通子图是在有向图中进行讨论的,不…

Python 调整子图大小、位置【plt.axes()自定义子图】

效果图: plt.axes()绘图结果 上图一共三个子图,两个横向子图对齐右侧纵向长图。 本来想用plt.subplot()函数画,结果找了半天都是下图这种结果: 只能合并列,不能合并行 plt.subplot()绘图结果 因此,我放…

子图的概念

设G(V,E)为一个图,H(V’,E’)也是一个 图,称H为G的一个子图(subgraph),如果 ,并且对任意的边euv∈E’必须有u,v∈V’,记为 , 此时也称G为H的母图(super graph). 设H(V’,E’)为G(V,E)的一个子图,称H为G的生成(支撑)子图(spanning subgraph),如果V’V. 设G(V,E)是一个图,,构造一…

最大完全子图和极大连通子图

最近学习图论的一串小结之一 完全图&完全子图&最大完全子图 完全图:任意两点都恰有一条边相连的图(任意两点都相邻)。 完全子图:满足任意两点都恰有一条边相连的子图,也叫团。 最大完全子图:所有完全子图中顶点数最大…

子图,生成子图和导出子图

所有的顶点和边都属于图G的图称为G的子图。含有G的所有顶点的子图称为G的生成子图。 设V1是V的一个非空子集,以V1为顶点集,以两端点均在V1中的边的全体为边集的子图称为G的导出子图,记作G[V1]。导出子图G[V\V1]记为G-V1,它是从G中…

子图、生成子图、导出子图和主子图

所有的顶点和边都属于图G的图称为G的子图。含有G的所有顶点的子图称为G的生成子图。 设V1是V的一个非空子集,以V1为顶点集,以两端点均在V1中的边的全体为边集的子图称为G的导出子图,记作G[V1]。导出子图G[V\V1]记为G-V1,它是从…

子图,生成子图(Spanning Subgraph),导出子图(Induced Subgraph)的定义

首先给出一些定义。原图G用G (V, E)表示,V是G中的所有顶点的集合;E是G中所有边的集合。 子图 定义:子图G’中所有的顶点和边均包含于原图G。即E’∈E,并且V’∈V。 生成子图(Spanning Subgraph) 定义&…

图论中的概念(1)——子图、商图与补图

1.子图(subgraph) 设G(V, E)和G¢(V¢, E¢)是两个(有向的或无向的)图。 (1) 若V¢V且E¢ E,则称G¢为G的子图; (2) 若V¢V且 E¢ E,则称G¢为G的真子图(proper-); (3) 若V¢V且E…

图的基本概念

图的基本概念 一个图 G 它可以由顶点集(图 G 中顶点的有限非空集) V 和边集(图 G 中顶点之间的关系集合) E 所组成。图中顶点个数也可以称为图的阶;任何一条边的两头必须连接某一个顶点。图不可以是空,即顶…

图论(3)子图,图运算,路与连通性

目录 一、子图相关概念 1.子图概念 2.点导出子图与边导出子图 点导出子图 边导出子图 3.图的生成子图 二、图运算 1.图的删点、删边运算 删点运算 删边运算 2.图的并运算 3.图的交运算 4.图的差运算 5.图的对称差运算或环和运算 6.图的联运算 7.图的积图 8.图…

数据可视化——子图的绘制及坐标轴共享

一、绘制固定区域的子图 matplotlib可以将整个画布规划成等分布的m*n(行 x 列)的矩阵区域,并对每个区域进行编号。 1.1、绘制单子图 使用pyplot()函数的subplot()可以在规划好的某个区域中绘制单个子图。 语法格式如下: subplo…

子图

前言 子图是指说绘制的图形是有多个图形组成的,通过子图能否进行数据的不同比较。其主要是通过subplot方法实现的。 其中有规范划分和不规则划分。 subplot(numRows, numCols, plotNum) numRows:子图总行数 numCols:子图总列数 plotNum:子图编号(从左到右&#xf…

Matplotlib(二)—— 子图

Python模块 —— Matplotlib Matplotlib(二)—— 子图四、子图4.1 均匀子图4.1.1 plt.subplots4.1.2 plt.subplot 4.2 非均匀子图4.2.1 fig.add_gridspec 4.3 子图上的方法4.4 墨尔本温度数据集4.5 画出数据的散点图和边际分布图 Matplotlib(…

物联网和海计算有什么关系,主要具有哪些优点?

物联网和海计算 海计算通过在物理世界的物体中融入计算与通信设备以及智能算法,让物物之间能够互连,在事先无法预知的场景中进行判断,实现物物之间的交互作用。海计算一方面通过强化融入在各物体中的信息装置,实现物体与信息装置…

再谈智能

1. 智能的产生 1.1 智能生成机理 有关智能生成的机理,一直是许多领域关注的焦点问题,涉及面之广、深很是少见,初步梳理可能会与这样几个最基本的问题有关:认知生成的机理、知识生成的机理、意义生成的机理、情感生成的机理、…

神码ai人工智能写作机器人_神经符号AI为我们提供具有真正常识的机器

神码ai人工智能写作机器人 By Katia Moskvitch 卡蒂亚莫斯科维奇(Katia Moskvitch) “那只狗躲在床底下。 再次。” (“The dog hid under the bed. Again.”) At any other time, IBM computer scientist Danny Gutfreund, then at IBM’s Haifa lab in Israel, would’ve pr…