matplotlib之pyplot模块——在特定网格位置中添加一个子图(subplot2grid)_matplotlib pyplot subplot2grid-程序员宅基地

技术标签: Matplotlib  subplot2grid  网格  子图  matplotlib  subplot  

当前有效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()

在这里插入图片描述

案例:混合应用subplotsubplotssubplot2grid函数

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()

在这里插入图片描述

subplotsubplot2grid函数之间的比较

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()
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mighty13/article/details/116140986

智能推荐

Hadoop技术解析:分布式存储与计算_hadoop数据采集和存储-程序员宅基地

文章浏览阅读1k次,点赞37次,收藏17次。Hadoop是一个开源的分布式计算平台,用来处理大规模数据集。它基于Google的MapReduce算法和Google文件系统(GFS)的论文实现,通过分布式存储和计算来处理大规模数据。_hadoop数据采集和存储

CS-NP白蛋白包覆壳聚糖纳米颗粒/人血清白蛋白-磷酸钙纳米颗粒无机复合材料_静电吸附白蛋白纳米粒-程序员宅基地

文章浏览阅读182次。以人血清白蛋白修饰的上转换纳米颗粒为载体运输光敏性的多吡啶钌化合物,该体系具有双重荧光特性,用于细胞成像,而且能够通过光照控制释放;采用静电吸附的方法,在壳聚糖纳米粒子(CS-NP)表面包覆白蛋白,研究CS-NP修饰前后粒径,电位,稳定性的变化,并通过MTT法检测修饰前后CS-NP对MCF-7细胞的影响.结果BSA-CS-NP荷负电荷,稳定性提高,抑制效应增强.结论白蛋白修饰后作用增强.原因可能是白蛋白修饰后提高了壳聚糖纳米粒的稳定性,诱发细胞的内吞效应,作用增强.载纳米雄黄磁性白蛋白纳米球。......_静电吸附白蛋白纳米粒

python 脚本执行外部程序.exe关闭窗口程序(tcy)_update#setstate idle-程序员宅基地

文章浏览阅读9.2k次,点赞6次,收藏32次。说明:前面的部分用于打开外部程序.exe;win32gui用于关闭窗口程序(显示最大化最小化)Python调用(运行)外部程序 2019/3/7在Python中可在脚本中直接使用其他脚本或程序1 使用os.system(command)运行其他程序 :参数command 要执行的命令,相当于在Windows的cmd窗口中输入的命令。如果要向程序或者脚本传递参数,可以..._update#setstate idle

Springboot计算机毕业设计家政帮帮微信小程序【附源码】开题+论文+mysql+程序+部署-程序员宅基地

文章浏览阅读660次,点赞22次,收藏17次。具体而言,研究目的包括:设计并实现服务分类、订单完成、用户管理、服务信息发布、家政人员管理、预约信息管理等功能模块,确保用户能够方便地浏览和选择服务,实现快速预约和下单;我们将建立严格的信息审核机制,对家政人员发布的服务信息进行审核和筛选,确保信息的真实性和可靠性。首先,对家政服务行业进行深入的市场调研和需求分析,明确用户的需求和期望,为小程序的功能设计提供依据。此外,我们还将通过小程序收集用户数据和反馈信息,进行深入的数据分析,为家政服务行业的市场预测、决策支持和业务发展提供有力支持。

Labview Ethernetip TCP网口通讯欧姆龙PLC OmronNX1P2NJ501NJ301PLC标签通讯 CIP通讯比Fins通讯更完美_fins cip-程序员宅基地

文章浏览阅读549次,点赞7次,收藏10次。本文将从以下几个方面进行详细的讨论:自定义变量读写、Bool单点或数组读写、数字格式单个或数组读写、浮点数单个或数组读写,并通过实际测试验证程序的准确性。通过本文的学习,读者将能够更好地理解如何使用LabVIEW进行Ethernet/IP TCP网口通信,并更加灵活地与欧姆龙PLC进行通信。通过使用LabVIEW进行Ethernet/IP TCP网口通信与欧姆龙PLC的标签通信,我们能够更加灵活和方便地控制设备的状态和参数。相比传统的Fins通信,CIP通信具有更多的优势和功能,可以满足更多的应用需求。_fins cip

计算机视觉算法中的 相机姿态估计(Camera Pose Estimation)-程序员宅基地

文章浏览阅读2.5k次,点赞4次,收藏18次。另外,相机姿态估计是一个复杂的问题,还有其他更复杂的算法和方法可供选择,如PnP算法、EPnP算法、直接法(如ORB-SLAM)等。相机姿态估计,即相机位姿估计,是指通过计算机视觉算法来确定相机在世界坐标系中的位置和方向。一般情况下,我们可以将相机的姿态表示为一个4×4的变换矩阵,即相机的位姿矩阵。它通过检测图像中的特征点,并找到两幅图像之间对应的特征点,然后利用这些特征点的几何关系来估计相机的姿态。通过估计相机的姿态,可以根据相机的位置和朝向来确定虚拟对象的位置和姿态,从而实现虚拟对象与实际场景的融合。_相机姿态估计

随便推点

如何通过编程更改Windows 10用户文件夹的名称-程序员宅基地

文章浏览阅读34次。在Windows 10中,用户文件夹是每个用户帐户的主文件存储位置。用户文件夹的默认名称是用户的用户名。但是,有时候我们可能需要通过编程方式更改用户文件夹的名称。本文将介绍如何使用Python编程语言修改Windows 10用户文件夹的名称。此外,我们还需要更新注册表中的文件夹路径,以确保系统能够正确识别更改后的用户文件夹。首先,我们获取当前的用户名和用户文件夹路径。通过上述代码,您可以使用Python编程语言更改Windows 10用户文件夹的名称。函数将新的文件夹重命名为原有的用户名。

鸿蒙应用开发游戏(一)---大鱼吃小鱼(界面部署)_鸿蒙游戏开发教程-程序员宅基地

文章浏览阅读889次,点赞22次,收藏8次。你是否玩过古老而不失优雅的大鱼吃小鱼,小鱼的生存之路何尝不是我们这些打工人的写照,以前想用安卓写的,碰巧鸿蒙它来了,那就边学习边记录吧,这个游戏一共分为6篇,记录了鸿蒙App的第一步创建,申明式UI控件如何使用,简单动画的使用,方法的封装,变量的状态管理,点击事件的分发,页面的生命周期,钩子的使用,一些用法与安卓原生的对比等,也算是一个小完整的项目了。第一篇相对简单,只是简单的布局摆放,用的知识点是Stack布局,State状态管理,Entry入口,Component注解等1、创建项目2、项目结构。

tk.mybatis.mapper.MapperException: 无法获取实体类com.leyou.work.entity.Brand对应的表名!_tk.mybatis.mapper.mapperexception: 无法获取实体类com.ai.a-程序员宅基地

文章浏览阅读2.8k次。完整报错:tk.mybatis.mapper.mapperhelper.EntityHelper.getEntityTable(EntityHelper.java:69) ~[mapper-core-1.1.5.jar:na] at tk.mybatis.mapper.entity.Example.<init>(Example.java:103) ~[mapper-core-1.1..._tk.mybatis.mapper.mapperexception: 无法获取实体类com.ai.ai.pojo.aiapikey对应

计算机毕业设计springboot+vue基本微信小程序的剧本杀游戏设计与实现_vue开发微信小游戏-程序员宅基地

文章浏览阅读385次。首先,论文一开始便是清楚的论述了小程序的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了小程序的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项目软件架构选择B/S模式,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码编写实现功能。论文的最后章节总结一下自己完成本论文和开发本项目的心得和总结。开发说明:前端使用微信微信小程序开发工具;_vue开发微信小游戏

计算机桌面颜色如何设置标准,教你把电脑屏幕设置成可以保护眼睛的颜色-程序员宅基地

文章浏览阅读1.4k次。点评:我们知道,长期使用电脑,眼睛盯着屏幕会使眼睛非常干涩、疲劳,所以现在流行将电脑设置成可以保护眼睛的颜色。我们知道,长期使用电脑,眼睛盯着屏幕会使眼睛非常干涩、疲劳,所以现在流行将电脑设置成可以保护眼睛的颜色。这两天人资部的MM问我如何给电脑设置成保护眼睛的颜色,其实,百度一下“保护眼睛的颜色设置”、“保护眼睛的电脑颜色”等关键词,就可以找到很多教授设置电脑为保护色的攻略,按照网上讲解的方法可..._电脑桌面颜色保护眼睛

CoppeliaSim实例分析系列-ABB IRB140(二)_feima1134.flv-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏7次。CoppeliaSim实例分析系列-ABB IRB140(二)在CoppeliaSim实例分析系列-ABB IRB140(一)中,我们简单介绍了ABB IRB140实例的仿真环境设置,并添加了新的Non-thread Child Script来控制机器人。现在我们来深入讲解如何使用Non-thread Child Script来控制机器人。原版环境中的脚本编程顺序过于混乱,不方便学习,请大家下载我修改过的IRB140优化脚本。在开始之前,大家需要搞了解如下内容:简单掌握Lua语言的语法,请参考_feima1134.flv

推荐文章

热门文章

相关标签