matplotlib之pyplot模块——在特定网格位置中添加一个子图(subplot2grid)

Matplotlib复杂子图嵌套布局:GridSpec、subplot2grid与inset_axes实战详解 在数据可视化领域,图表布局是提升信息传达效率的关键技术。其核心原理在于对画布空间进行精细化分割与坐标轴管理,以实现多图表的高效组合。这项技术的核心价值在于能够将复杂的数据关系通过逻辑清晰的视觉层次呈现,从而在学术研究、商业分析等场景中制作出信息密度高、可读性强的专业级图表。Matplotlib作为Python生态中功能强大的绘图库,其底层的Figure与Axes对象为复杂布局提供了基础。针对子图嵌套这一常见需求,GridSpec通过虚拟网格系统实现了比例精确的布局控制,subplot2grid提供了直观的坐 阅读详情

当前有效matplotlib版本为:3.4.1。

函数概述

subplot2grid函数的功能是在特定网格位置中添加一个子图。

函数的定义签名为:matplotlib.pyplot.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)。

函数的调用签名为:
ax = subplot2grid((nrows, ncols), (row, col), rowspan, colspan)

函数的参数为:

  • shape:定义子图网格的行数和列数。整数二元组,(nrows, ncols) 。
  • loc:定义新增子图在子图网格中的位置(行、列索引)。整数二元组,(nrow, ncol) 。
  • rowspan:定义新增子图向下跨越的行数。可选参数。整数,默认值为1。
  • colspan:定义新增子图向右跨越的列数。可选参数。整数,默认值为1。
  • fig:用于设置添加子图的Figure对象。可选参数。Figure对象。默认值为当前Figure对象。
  • subplot_kw :用于向创建子图时的底层函数 ~matplotlib.figure.Figure.add_subplot传递关键字参数。可选参数。字典。
  • **kwargs:用于向~.Figure.add_subplot传递的关键字参数。可选参数。

函数的返回值为:
.axes.SubplotBase实例,或其他~.axes.Axes的子类实例。

函数原理

subplot2grid函数其实是fig.add_subplot方法的封装。源码为:

def subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs):

    if fig is None:
        fig = gcf()

    rows, cols = shape
    gs = GridSpec._check_gridspec_exists(fig, rows, cols)

    subplotspec = gs.new_subplotspec(loc, rowspan=rowspan, colspan=colspan)
    ax = fig.add_subplot(subplotspec, **kwargs)
    bbox = ax.bbox
    axes_to_delete = []
    for other_ax in fig.axes:
        if other_ax == ax:
            continue
        if bbox.fully_overlaps(other_ax.bbox):
            axes_to_delete.append(other_ax)
    for ax_to_del in axes_to_delete:
        delaxes(ax_to_del)

    return ax

因此ax = subplot2grid((nrows, ncols), (row, col), rowspan, colspan)相当于

fig = gcf()
gs = fig.add_gridspec(nrows, ncols)
ax = fig.add_subplot(gs[row:row+rowspan, col:col+colspan])

案例:简易应用

import matplotlib.pyplot as plt


def annotate_axes(fig):
    for i, ax in enumerate(fig.axes):
        ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
        ax.tick_params(labelbottom=False, labelleft=False)


fig = plt.figure()
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax5 = plt.subplot2grid((3, 3), (2, 1))

annotate_axes(fig)

plt.show()

在这里插入图片描述

案例:混合应用subplot、subplots、subplot2grid函数

import matplotlib.pyplot as plt

# 添加3行3列子图9个子图
fig, axes = plt.subplots(3, 3)
# 为第1个子图绘制图形
axes[0, 0].bar(range(1, 4), range(1, 4))
# 使用subplot函数为第5个子图绘制图形
plt.subplot(335)
plt.plot(1,'o')
# 使用subplot2grid函数将第三行子图合并为1个
plt.subplot2grid((3,3),(2,0),colspan=3)
# 返回值为Axes对象列表,元素个数为7
print(fig.axes)
plt.show()

在这里插入图片描述

subplot、subplot2grid函数之间的比较

subplot函数和subplot2grid函数极其相似。

  • 都可以向当前图像中添加一个子图。
  • 返回值也都是一个Axes实例。
  • 都可以指定子图在子图网格中的位置。

不同之处在于指定子图网格中位置的方法,特别是不规则子图布局时。

  • subplot函数指定位置的方法相对比较隐晦,比如子图位置重叠时,隐含删除被覆盖子图。
  • subplot2grid函数借助gridspec指定位置时相对清晰。

例如:

import matplotlib.pyplot as plt

# 绘制1行2列子图中的第1个子图
plt.subplot(121,facecolor='r')
# 绘制2行2列子图中的第2个子图
plt.subplot(222,facecolor='g')
# 绘制2行2列子图中的第4个子图
plt.subplot(224,facecolor='b')

plt.show()

等价于

import matplotlib.pyplot as plt

# 绘制1行2列子图中的第1个子图
plt.subplot2grid((2,2),(0,0),rowspan=2,facecolor='r')
# 绘制2行2列子图中的第2个子图
plt.subplot(222,facecolor='g')
# 绘制2行2列子图中的第4个子图
plt.subplot(224,facecolor='b')

plt.show()
通过subplot2grid()函数设置子图的位置 一、subplot2grid()是Matplotlib库中的一个函数,用于在特定的网格位置上创建子图。按上方要求,仅需修改少部分代码,使用subplot2grid()函数并设置其参数,即可达到效果。如果使用默认画布尺寸可能无法达到我们想要的运行效果,这时我们需要重新设置合适的画布尺寸。rowspan:表示子图在行方向上的跨度,如果不指定则默认为1。colspan:表示子图在列方向上的跨度,如果不指定则默认为1。rows与cols这两个参数可以设置网格的行与列。loc:是一个元组,表示子图在网格中的位置。 阅读详情

相关推荐

利用plt.subplot2grid()函数绘制图表

subplot2grid(shape,loc)将参数shape所划定的网格布局作为绘图区域,实现了在参数loc位置处绘制图形。

tshzkd的博客 342

Matplotlib subplot2grid()函数详解

Matplotlib subplot2grid()函数详解 matplotlib.pyplot 模块提供了 subplot2grid() ,该函数能够在画布的特定位置创建 axes 对象(即绘图区域)。不仅如此,它还可以使用不同数量的行、列来创建跨度不同的绘图区域。与 subplot() 和 subplots() 函数不同,subplot2gird() 函数以非等分的形式对画布进行切分,并按照绘图区域的大小来展示最终绘图结果。 函数语法格式如下: plt.subplot2grid(shape, locati

ccc369639963的博客 5650

Matplotlib绘图(基础篇)

一、Matplotlib绘图的编程方式: 1、pyplot: 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。(常用) 2、pylab:将Matplotlib和Numpy合并的模块,模拟Matlab的编程环境。(不推荐使用) 3、面向对象的方式:Matplotlib的精髓,更基础和底层的方式。(常用) 二、Matplotlib绘图基础 1、Matplotlib绘图标记使用plot()方法的marker参数定义 2、Matplotlib绘图线

Yangyuqing_的博客 1万+

plt.subplot2grid()函数

subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs) 官方对这个函数作用的解释为: Create an axis at specific location inside a regular grid.(在常规网格内的特定位置创建轴) 举个例子会比较好解释 #参数1:Shape of grid->(4,4) #参...

白炎灵的博客 5524

Matplotlib子图与坐标轴:从网格布局到面向对象绘图的进阶指南

在数据可视化领域,Matplotlib作为Python的核心绘图库,其核心绘图单元是理解其强大功能的基础。绘图的基本原理在于将画布(Figure)划分为独立的绘图区域,每个区域拥有自己的坐标系和属性。面向对象(OO)接口通过Axes对象实现了这一原理,它作为绘图的原子单元,提供了对坐标轴、刻度、标签等元素的精细控制,从而提升了代码的可维护性和图表的灵活性。这种技术价值在于能够创建复杂、非标准的布局,如仪表盘、嵌套图和多轴图,满足科研、工程报告等多样化应用场景的需求。相比之下,subplot函数是一种基于网格

dggnqzt6462的博客 467

7、subplot2grid() 函数

subplot2grid() 函数

融码一生:专注 Python、C/C++、Linux、机器学习 & 深度学习、NLP、算法领域分享 593

matplotlib.pyplot.subplot2grid

matplotlib.pyplot.subplot2grid

荣耀之路 2370

保姆级教程:在Ubuntu 20.04上搞定pybind11,解决‘找不到头文件’的坑

本文提供了一份详细的Ubuntu 20.04下pybind11配置指南,重点解决常见的'找不到头文件'问题。从环境准备、安装策略到三种专业解决方案(修改CMakeLists.txt、环境变量方案、绝对路径包含),帮助开发者高效搭建C++与Python的桥梁。

weixin_28829325的博客 284

matplotlib绘制子图 subplot

1.绘制子图 使用subplot() 方法,subplot()方法传入numrows,numcols,fignum参数:fignum范围是 1 到numrows*numcols import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.0, 5.0, 50) y1 = np.sin(x) y2 = np.exp(x) *...

庸木自琢 1743

FPGA新手必看:Quartus生成jic文件全流程详解(附AS/JTAG模式选择指南)

本文详细解析了在Quartus中生成JIC文件以固化FPGA程序到Flash的全流程。核心在于理解JIC文件作为连接JTAG调试与AS固化的桥梁作用,并重点阐述了Convert Programming Files工具的关键配置步骤、AS与JTAG模式的选择逻辑,以及烧录过程中的常见问题排查指南,帮助开发者实现程序断电不丢失。

weixin_29271053的博客 275

Qlib+backtrader:2014.1.1-2023.9.20最新回测结果,可以实盘吗?

今年以来,在研究了qlib和backtrader的基础上,把二者结合起来进行了一个策略研究。简单说就是用qlib在200只股票的股票池中进行滚动训练与预测(walk forward),总体数据范围是2005到2023年,以20日间隔滚动训练和预测,最终得到2014.1.1-2023.9.20共10年测试期的收益率预测结果。将预测结果代入backtrader进行回测,得到如下回测结果。

qtbgo的博客 1783

Matplotlib 简单教程 7:多字图:matplotlib.pyplot.subplot2grid()

摘要:matplotlib.pyplot.subplot2grid()方法用于在网格布局中创建灵活的子图布局。关键参数包括:shape(网格形状)、loc(子图位置)、rowspan/colspan(跨越行列数)和fig(指定图形对象)。通过示例演示了各参数的使用方法,展示了如何创建不同布局的子图,包括跨行跨列的子图以及自定义样式。该方法提供了比常规subplot更灵活的网格布局控制,适合创建复杂的多图表展示。

weixin_39204333的博客 938

如何区分Info与CoWoS封装?

这篇文章主要从Info、CoWoS封装的定义、Interposer的种类以及Info、CoWoS封装的种类三方面进行了介绍,希望读者能够有所收获

wangyubo1的博客 7938

Python可视化: Matplotlib

什么是 Matplotlib?Matplotlib是Python中最流行的2D绘图库,可以创建各种静态、动态和交互式可视化图表。它提供了类似MATLAB的绘图接口,广泛应用于数据分析和科学计算领域。Matplotlib 的安装如果您的系统上已经安装了和使用命令安装它:C:\Users\Your Name导入Matplotlib Pyplot大多数 Matplotlib 实用程序位于pyplot子模块下,通常以别名导入plt什么是 NumPy?NumPy 是一个用于处理数组的 Python 库。

2401_87410795的博客 2056

SAP PCE 到底有没有 AI 能力:从标准功能、Joule、ABAP 扩展到项目落地的完整解读

摘要:SAP S/4HANA Cloud Private Edition(PCE)已深度集成AI能力,主要体现在三个方面:1)标准业务流程中的AI辅助功能(如财务分录生成、维修单据处理);2)通过Joule提供的自然语言交互入口,支持业务导航和部分事务处理;3)开发者可通过ABAP AI SDK与BTP平台集成实现扩展。PCE不是独立AI平台,企业级自定义AI需结合SAP BTP实现。AI能力已深度融入财务、制造等业务场景,但关键业务仍需人工审核。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 330

树莓派 RP2350B 开发环境搭建

本文介绍了树莓派RP2350B开发环境的搭建过程。

张一西的博客 286

使用pyplot的subplot2grid()函数修改子图位置

【代码】使用pyplot的subplot2grid()函数修改子图位置。

lonly_FK的博客 432

【32】C# WinForm入门到精通 ——打开文件OpenFileDialog 【属性、方法、事件、实例、源码】

本文介绍了WinForm开发中OpenFileDialog控件的关键属性及其应用。OpenFileDialog是.NET Framework提供的文件对话框控件,主要用于选择、打开文件操作。文章详细讲解了11个核心属性:AddExtension(自动补全扩展名)、AutoUpgradeEnabled(外观升级)、CheckFileExists/CheckPathExists(文件/路径存在验证)、DefaultExt(默认扩展名)、DereferenceLinks(解析快捷方式)、FileName/File

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1534

subplot2grid()--matplotlib

subplot2gird()函数--matplotlib 跨区绘制图形

chongbaikaishi的博客 1065

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1789

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python matplotlib 设置多子图、子图间距、外边距

Python matplotlib 设置多子图 设置多子图共享xy轴坐标,每一行共用 设置多子图共用xy轴坐标 设置多子图纵向间距 设置多子图横向间距 设置外边距

好记性不如烂笔头 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python matplotlib fig = plt.figure() fig.add_subplot()

一、matplotlib.pyplot.figure() Create a new figure, or activate an existing figure. matplotlib官网 功能: 创建一个新的图形 或激活一个已有的图形 **注意: 若不添加描述,默认图形描述为figure1; ** 形如plt.figure(‘新的图形’)为图形添加自定义描述 (1)figure语法说明 figure(num=None, figsize=None, dpi=None, facecolor=None, ed

Julienling的博客 5260

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Matplotlib库学习笔记(5) pyplot绘制复杂子图

参考链接: Matplotlib官网 参考链接: Python数据分析与展示

敲代码的小风 611

matplotlib.pyplot库的中文显示,文本显示,子绘图区域

中文显示pyplot并不支持中文显示,要想显示中文有两种方法: 一:全局修改 matplotlib.rcParams[‘font.family’] = ‘SimHei’ font.family 字体名字 font.style 字体分割 ‘normal’正常 ‘italic’ 斜体等等 font.size 字体大小 第二种方法:(推荐) 在有中文输出的地方,增加一个属性fon

u014539580的专栏 5612

matplotlib图像(figure)

本文详细介绍了matplotlib中figure的操作,介绍了如何绘制各种子图,以及坐标设置等内容

Jay_Franklin的博客 1798

Matplotlib1-学会自己手打图片

Matplotlib的基本用法,基础知识总结。

qq_41914036的博客 1291
上一篇: matplotlib之pyplot模块——添加一组子图(subplots)
下一篇: matplotlib之pyplot模块——向任意位置添加一个子图(axes)
mighty13
博客等级 码龄23年 728粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值