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, optional
        How 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, optional
        How 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()函数设置多子图位置的方法。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ODOO学习笔记(1):ODOO的SWOT分析和技术优势是什么?

ODOO是一款开源的企业管理软件套件,广泛应用于企业管理中。它由比利时的Odoo S.A.公司开发,最初名为OpenERP,现在已经成为全球流行的ERP解决方案之一。ODOO集成了ERP、CRM、电子商务和CMS等多种功能模块,适用于各种规模的企业应用…

淘酒屋殷卓荣窖主高端客户私享答谢晚宴暨意大利摩罗斯酒庄之夜

一边是热爱,一边是事业,鱼与熊掌兼得淘酒屋殷卓荣窖主答谢晚宴圆满结束 淘酒屋殷卓荣窖主高端 VIP 客户私享答谢晚宴暨意大利摩罗斯酒庄品鉴之夜在广州四季酒店 99 楼圆满举办 2024 年 11 月 8 日晚,一场别开生面的淘酒屋殷卓荣窖主高端 VI…

LeetCode热题100之贪心算法

1.买卖股票的最佳时机 思路分析:即需要找出某一天的最低价格和它后面几天的最高价格差。 维护一个变量min_price,表示到目前为止遇到的最低股票价格;遍历prices数组,在每一天的价格上: 更新min_price为当前的价格和mi…

SL6115降压恒流 60V降压恒流芯片,高精度1%,PWM模拟调光

一、核心参数与性能 工作电压范围:5.5V至60V,宽输入电压范围使其能够适应多种应用场景。 最大输出电流:根据公开发布的信息,SL6115的最大输出电流可达到1.2A至1.5A,具体取决于不同版本或制造商的规格说明。这一高输出…

测试概念以及测试bug

关于测试的概念 什么是需求? 需求分为用户需求和软件需求。 软件需求可以作为开发和测试工作的依据,而用户需求不一定是合理的,这里的不合理有很多的角度:技术角度上,市场需求上,投入成本和收益比噔噔。…

【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者

在工业领域,工业风扇的稳定高效运行对于维持良好的生产环境至关重要。而驱动芯片作为工业风扇控制系统的核心元件,其性能直接影响风扇的工作状态。芯麦 GC5931 作为一款新型驱动芯片,在替代 A5931/Allegro 应用于工业风扇中展现出了非凡的优势…

阿里云docker安装禅道记录

docker network ls docker network create -d bridge cl_network sudo docker run --name zentao --restart always -p 9982:80 --networkcl_network -v /data/zentao:/data -e MYSQL_INTERNALtrue -d hub.zentao.net/app/zentao:18.5 升级禅道 推荐用按照此文档升级&a…

艾体宝产品丨加速开发!Redis Copilot智能助手上线

我们最近发布了 Redis Copilot,旨在帮助开发者更加高效地使用 Redis 构建应用。提升应用性能,简化构建过程是我们不懈的追求。Redis Copilot 正是为此而生的人工智能助手,助力开发者迅速掌握 Redis 的使用技巧。现在您可以在 Redis Insight 中…

深度学习入门:梯度消失问题浅谈(Sigmod,ReLu)

Sigmoid的梯度消失 以下是一个通过简单的神经网络示例来解释 Sigmoid 函数的梯度消失问题。 假设有一个非常简单的三层神经网络,输入层有两个神经元,隐藏层有两个神经元,输出层有一个神经元。我们使用均方误差作为损失函数,并且…

Chromium127编译指南 Linux篇 - 额外环境配置(五)

引言 在成功获取 Chromium 源代码后,接下来我们需要配置适当的编译环境,以便顺利完成开发工作。本文将详细介绍如何设置 Python 和相关的开发工具,以确保编译过程无碍进行。这些配置步骤是开发 Chromium 的必要准备,确保环境设置…

批量混剪矩阵发布助力短视频营销快速获客

内容概要 在现代营销环境中,短视频已经成为品牌传播的重要工具,尤其是在获取潜在客户方面,短视频营销展现出了卓越的效率。那么,为什么要做短视频营销呢?首先,短视频能够迅速抓住观众的注意力,…

uni-app小程序echarts中tooltip被遮盖

图表中的文案过长,tooltip溢出容器,会被遮盖住 解决方案: 在echarts的tooltip中有confine属性可将tooltip限制在容器内,不超过容器,就不易被遮盖

怎么把图片快速压缩变小?图片在线压缩的3款简单工具

随着互联网的快速发展,将图片上传到网上平台来展示是很常用的一种方式,但是现在图片质量越来越高,导致图片也比较大,经常会出现无法上传的情况。那么在遇到这个问题时,通过图片压缩功能来处理图片会比较简单。本文给大…

科学计算服务器:如何计算算力?如何提升科学研究效率?

在现代科学研究的舞台上,科学计算服务器犹如一位强大的幕后英雄,为复杂科学计算任务的攻克提供着坚实支撑。准确计算其算力并充分发挥优势,对提升科学研究效率意义非凡。 服务器的中央处理器(CPU)计算力。在科学计算服…

【MRAN】情感分析中情态缺失问题的多模态重构和对齐网络

abstract 多模态情感分析(MSA)旨在通过文本、视觉和声音线索识别情感类别。然而,在现实生活中,由于各种原因,可能会缺少一到两种模式。当文本情态缺失时,由于文本情态比视觉和听觉情态包含更多的语义信息&…

Kafka生产者如何提高吞吐量?

1、batch.size:批次大小,默认16k 2、linger.ms:等待时间,修改为5-100ms 3、compression.type:压缩snappy 4、 RecordAccumulator:缓冲区大小,修改为64m 测试代码: package com.bigd…

【论文笔记】SparseRadNet: Sparse Perception Neural Network on Subsampled Radar Data

原文链接:https://arxiv.org/abs/2406.10600 简介:本文引入自适应子采样方法和定制网络,利用稀疏性模式发掘雷达信号中的全局和局部依赖性。本文的子采样模块选择 RD谱中在下游任务贡献最大 像素 的子集。为提高子采样数据的特征提取&#xf…

如何制定公司软件测试策略

在当今快速发展的软件行业,制定一套有效的软件测试策略至关重要。尤其是在互联网产品的背景下,测试策略不仅需要高效,还要具备灵活性,以便快速响应市场变化。本文将对比传统测试策略与互联网产品测试策略,并提供制定公…

【JWT】Asp.Net Core中JWT刷新Token解决方案

Asp.Net Core中JWT刷新Token解决方案 前言方案一:当我们操作某个需要token作为请求头的接口时,返回的数据错误error.response.status === 401,说明我们的token已经过期了。方案二:实现用户无感知的刷新token值,我们希望当响应返回的数据是401身份过期时,响应阻拦器自动帮我…

机器学习—Softmax

Softmax回归算法是Logistic回归的推广,它是一种针对多类分类上下文的二进制分类算法。 当y可以接受两个可能的输出值时,Logistic回归就适用了,不是零就是一,它计算这个输出的方式是首先计算zw*xb,然后计算ag(z)&#…