python画图|灵活的subplot_mosaic()函数-初逢

【1】引言

前述学习进程中,对hist()函数画直方图已经有一定的探索。然而学无止境,在继续学习的进程中,我发现了一个显得函数subplot_mosaic(),它几乎支持我们随心所欲地排布多个子图。

经过自我探索,我有一些收获,写在这里和大家一起继续学习。

【2】官网教程

首先是进入官网,点击下方链接直达:

Complex and semantic figure composition (subplot_mosaic) — Matplotlib 3.9.2 documentation

在这里,我们看到先用常规plot方法画出了两行两列的子图,然后调用subplot_mosaic()输出了同样结果,为此我们做一下代码解读。

【3】代码解读

在plot画子图的过程中,调用了text()函数,为避免偏离主题和带来疑惑,我们主要集中精力探索下述代码段:

fig = plt.figure(layout="constrained")
ax_dict = fig.subplot_mosaic(
    [
        ["bar", "plot"],
        ["hist", "image"],
    ],
)
ax_dict["bar"].bar(["a", "b", "c"], [5, 7, 9])
ax_dict["plot"].plot([1, 2, 3])
ax_dict["hist"].hist(hist_data)
ax_dict["image"].imshow([[1, 2], [2, 1]])
identify_axes(ax_dict)

在这里我们看到定义了一个fig.subplot_mosaic()函数,函数包括四个小项"bar"、"plot"、"hist"和"image",这四个小项提前占好了位置,分别是:

"bar":[1,1]

"plot":[1,2]

"hist":[2,1]

"image":[2,2]

真正执行将fig.subplot_mosaic()函数中的小项输出的操作是:identify_axes(ax_dict)。

接下来我们回到identify_axes(ax_dict)函数的具体定义:

def identify_axes(ax_dict, fontsize=48):"""Helper to identify the Axes in the examples below.Draws the label in a large font in the center of the Axes.Parameters----------ax_dict : dict[str, Axes]Mapping between the title / label and the Axes.fontsize : int, optionalHow big the label should be.""" kw = dict(ha="center", va="center", fontsize=fontsize, color="darkgrey")for k, ax in ax_dict.items():ax.text(0.5, 0.5, k, transform=ax.transAxes, **kw)

在这里, 使用dict()函数进行了赋值操作,虽然这个函数看起来很奇怪,但是将其功能直接理解为赋值操作即可:

之后使用k和ax在ax_dict 也就是 fig.subplot_mosaic()函数里面遍历,实现将fig.subplot_mosaic()函数里面的小项输出。

运行代码后的输出图像为:

图1

至此的完整代码为:

import matplotlib.pyplot as plt  #引入画图模块
import numpy as np #引入计算模块
np.random.seed(19680801) #定义随机数种子
hist_data = np.random.randn(1_500) #定义随机数数组# Helper function used for visualization in the following examples
def identify_axes(ax_dict, fontsize=48):   #自定义函数,该函数调用ax_dict作为输入参数"""Helper to identify the Axes in the examples below.Draws the label in a large font in the center of the Axes.Parameters----------ax_dict : dict[str, Axes]Mapping between the title / label and the Axes.fontsize : int, optionalHow big the label should be."""kw = dict(ha="center", va="center", fontsize=fontsize, color="darkgrey") #dict()也是一个函数,就理解为是一个赋值操作即可for k, ax in ax_dict.items():#让k和ax在ax.dict()这个数组里面遍历ax.text(0.5, 0.5, k, transform=ax.transAxes, **kw) #调用text()函数将ax_dict中的项输出
fig = plt.figure(layout="constrained")
ax_dict = fig.subplot_mosaic([["bar", "plot"],["hist", "image"],],)
ax_dict["bar"].bar(["a", "b", "c"], [5, 7, 9]) #调用bar()函数输出直方图
ax_dict["plot"].plot([1, 2, 3]) #调用plot()函数输出直线
ax_dict["hist"].hist(hist_data) #调用hist()函数输出频数分布图
ax_dict["image"].imshow([[1, 2], [2, 1]]) #调用imshow()函数填充区域
identify_axes(ax_dict) #调用自定义函数
plt.show() #输出图形

【4】代码修改

在前述内容中,fig.subplot_mosaic()函数将子项分成了两行两列,接下来我们将其改为一行:

ax_dict = fig.subplot_mosaic([["bar", "plot","hist","image"],#[ "image"],],)

此时的输出图像为:

图2

然后再改为一列:

ax_dict = fig.subplot_mosaic([["bar"],["plot"],["hist"],["image"],],)

此时的输出图像为:

图3

可见,通过定义fig.subplot_mosaic()函数子项的位置,可以直接影响subplot()子图的位置。

【5】总结

初步学习了fig.subplot_mosaic()函数设置多子图位置的方法。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单体架构的 IM 系统设计

先直接抛出业务背景! 有一款游戏,日活跃量(DAU)在两千左右,虽然 DAU 不高,但这两千用户的忠诚度非常高,而且会持续为游戏充值;为了进一步提高用户体验,继续增强用户的忠…

vue实现天地图电子围栏

一、文档 vue3 javascript WGS84、GCj02相互转换 天地图官方文档 注册登录然后申请应用key&#xff0c;通过CDN引入 <script src"http://api.tianditu.gov.cn/api?v4.0&tk您的密钥" type"text/javascript"></script>二、分析 所谓电子围…

基于SSM(Spring + Spring MVC + MyBatis)框架的汽车租赁共享平台系统

基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架的汽车租赁共享平台系统是一个复杂的Web应用程序&#xff0c;用于管理和调度汽车租赁服务。下面我将提供一个详细的案例程序概述&#xff0c;包括主要的功能模块和技术栈介绍。 项目概述 功能需求 用户管理&…

Python函数专题:默认参数与关键字参数

在Python编程中,函数是一个非常重要的概念。它们不仅用于组织代码,还能够提高代码的重用性和可读性。在本文中,我们将深入探讨Python的默认参数和关键字参数这两个特性。这些特性可以让函数的调用更加灵活和强大。 一、什么是默认参数? 默认参数是指在定义函数时,为某些…

前端将后端返回的文件下载到本地

vue 将后端返回的文件地址下载到本地 在 template 拿到后端返回的文件路径 <el-button link type"success" icon"Download" click"handleDownload(file)"> 附件下载 </el-button>在 script 里面写方法 function handleDownload(v…

【C++前缀和 单调栈】1124. 表现良好的最长时间段|1908

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 C单调栈 LeetCode 1124. 表现良好的最长时间段 给你一份工作时间表 hours&#xff0c;上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大…

qt5将程序打包并使用

一、封装程序 (1)、点击创建项目->库->clibrary &#xff08;2&#xff09;、填写自己想要封装成库的名称&#xff0c;这里我填写的名称为mydll1 &#xff08;3&#xff09;、如果没有特殊的要求&#xff0c;则一路下一步&#xff0c;最终会出现如下文件列表。 (4)、删…

PICO+Unity MR空间锚点

官方链接&#xff1a;空间锚点 | PICO 开发者平台 注意&#xff1a;该功能只能打包成APK在PICO 4 Ultra上真机运行&#xff0c;无法通过串流或PICO developer center在PC上运行。使用之前要开启视频透视。 在 Inspector 窗口中的 PXR_Manager (Script) 面板上&#xff0c;勾选…

远程终端vim里使用系统剪切板

1、本地通过终端远程linux server&#xff0c;由于不是桌面环境/GUI&#xff0c;终端vim里似乎没办法直接使用系统剪切板&#xff0c;即便已经是clipboard。 $ vim --version | grep clipboard clipboard keymap printer vertsplit eval …

网页中的某个元素高度突然无法设置

做网页时本来一个div的高度好好的&#xff0c;结果代码打着打着突然发现有个div的高度变的很小&#xff0c;把我很多在这个div里的元素给搞的看不见了。 找了好久的原因最后发现是这个div的结束标签</div>不小心被我删了,之后把这个</div>给补上就好了。

go中的类型断言详解

在Go语言中&#xff0c;类型断言&#xff08;Type Assertion&#xff09;是一种将接口类型的变量转换为具体类型的机制。类型断言允许我们从接口类型的变量中提取出具体的值&#xff0c;以便访问具体类型的方法或属性。类型断言的语法如下&#xff1a; value, ok : interfaceV…

17、论文阅读:VMamba:视觉状态空间模型

前言 设计计算效率高的网络架构在计算机视觉领域仍然是一个持续的需求。在本文中&#xff0c;我们将一种状态空间语言模型 Mamba 移植到 VMamba 中&#xff0c;构建出一个具有线性时间复杂度的视觉主干网络。VMamba 的核心是一组视觉状态空间 (VSS) 块&#xff0c;搭配 2D 选择…

ENSP (虚拟路由冗余协议)VRRP配置

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09;是一种用于提高网络可用性和可靠性的协议。它通过在多个路由器之间共享一个虚拟IP地址&#xff0c;确保即使一台路由器发生故障&#xff0c;网络依然能够正常运行&#xff0c;防止…

XSS漏洞--常用payload及绕过

前置准备 首先准备一个自己的服务器。本地服务器&#xff0c;也就是127.0.0.1不行。在服务器的公开的、可访问的目录下准备一个.php文件。我这里命名为flag.php。flag.php的源代码&#xff1a; //flag.php <?php $cookie $_GET[cookie]; $log fopen("cookie.txt&q…

【Leecode】Leecode刷题之路第44天之通配符匹配

题目出处 44-通配符匹配-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 44-通配符匹配-官方解法 前言 本题与10. 正则表达式匹配非常类似&#xff0c;但相比较而言&#xff0c;本题稍…

Redis - 主从复制

在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他服务器&#xff0c;满⾜故障恢 复和负载均衡等需求。Redis也是如此&#xff0c;它为我们提供了复制的功能&#xff0c;实现了相同数据的多个Redis副 本。复制功能是⾼可⽤Redis的基础&#xff0c…

推荐一款高级的安装程序打包工具:Advanced Installer Architect

AdvanCEd Installer Architect是一款高级的安装程序打包工具&#xff0c;我们有时候可能用nsis用的多&#xff0c;Advanced Installer Architect也是一款打包工具&#xff0c;有兴趣的朋友也可以试试。有了Advanced Installer Architect你就可以创建MSI打包。 主要功能 *先进的…

【信号处理】基于联合图像表示的深度学习卷积神经网络

Combined Signal Representations for Modulation Classification Using Deep Learning: Ambiguity Function, Constellation Diagram, and Eye Diagram 信号表示 Ambiguity Function(AF) 模糊函数描述了信号的两个维度(dimensions):延迟(delay)和多普勒(Doppler)。 …

CocosCreator 构建透明背景应用(最新版!!!)

文章目录 透明原理补充设置截图以及代码step1: electron-js mian.jsstep2:ENABLE_TRANSPARENT_CANVASstep3:SOLID_COLOR Transparentstep:4 Build Web phonestep5:package electron-js & change body background-color 效果图补充 透明原理 使用Cocos creator 做桌面应用开…

大数据学习11之Hive优化篇

1.Hive压缩 1.1概述 当前的大数据环境下&#xff0c;机器性能好&#xff0c;节点更多&#xff0c;但并不代表我们无条件直接对数据进行处理&#xff0c;在某些情况下&#xff0c;我们依旧需要对数据进行压缩处理&#xff0c;压缩处理能有效减少存储系统的字节读取数&#xff0…