当前位置: 首页 > news >正文

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.mrgr.cn/news/68965.html

相关文章:

  • linux下编译安装memcached
  • 【idea】更换快捷键
  • Android从Drawable资源Id直接生成Bitmap,Kotlin
  • Java poi 模板导出Word 带图片
  • DVWA靶场通关——SQL Injection篇
  • VoIP是什么?
  • 搭建react项目
  • 43python数据分析numpy基础之det计算矩阵的行列式
  • STM32H750 COMP模拟比较器
  • 星环大数据平台--TDH部署
  • 有什么初学算法的书籍推荐?
  • 【Syncfusion系列】Diagram 杂谈第一篇
  • 人工智能技术的应用前景及未来发展:改变工作与生活的力量
  • JavaScript 表单
  • 【leetcode】动态规划刷题总结-划分问题
  • pytorch torch.tile用法
  • 大数据-216 数据挖掘 机器学习理论 - KMeans 基于轮廓系数来选择 n_clusters
  • 连锁餐饮收银系统源码(收银端+扫码点餐+自营外卖+营销)
  • 双十一购买服务器不止局限于新用户,老用户同样有福利!
  • Zookeeper入门
  • 系统安全第六次作业题目及答案
  • 线程级耗时统计工具类TimeWatcher
  • PMP–知识卡片--人才九宫格
  • Windows 11开发环境配置与应用开发
  • 【Ant Design Pro】框架入门的起手式及架构的分析
  • 使用SpringAI快速实现离线/本地大模型应用