使用Matplotlib对分析结果可视化时,比较各类分析结果是常见的场景。
在这类场景之下,将多个分析结果绘制在一张图上,可以帮助用户方便地组合和分析多个数据集,提高数据可视化的效率和准确性。

本篇介绍Matplotlib绘制子图的常用方式和技巧。

1. 添加子图的方式

添加子图主要有两种方式,
一种是函数式风格:(也就是上一篇画布中介绍的方式)

import numpy as np

import matplotlib
import matplotlib.pyplot as plt %matplotlib inline x = np.array(range(0, 8)) fig = plt.figure(figsize=[6,4])
fig.add_subplot(211) # 2行1列的第一个
y = np.random.randint(1, 100, 8)
plt.plot(x, y) fig.add_subplot(212) # 2行1列的第二个
y = np.random.randint(1, 100, 8)
plt.plot(x, y)

另一种是面向对象风格:(使用 Axes 对象)

x = np.array(range(0, 8))

fig, ax = plt.subplots(1, 2)  # 设置子图1行2列
y = np.random.randint(1, 100, 8)
ax[0].plot(x, y) y = np.random.randint(1, 100, 8)
ax[1].plot(x, y)

上面设置好子图的布局之后,添加子图的顺序是从上到下,从左到右。

2. 子图的布局

子图的布局是按照行列设置的,设置之后,相应的位置可以添加子图。

x = np.array(range(0, 8))
rows, cols = 2, 2 # 2行2列,4个子图
fig, ax = plt.subplots(rows, cols) for i in range(rows):
for j in range(cols):
y = np.random.randint(1, 100, 8)
ax[i, j].plot(x, y) # i,j定位子图的位置


子图按照网格布局时,我们看到上面4个子图的Y轴刻度不一样,这样不利于比较。

x = np.array(range(0, 8))
rows, cols = 2, 2 # 2行2列,4个子图
fig, ax = plt.subplots(rows, cols, sharey='all') for i in range(rows):
for j in range(cols):
y = np.random.randint(1, 100, 8)
ax[i, j].plot(x, y) # i,j定位子图的位置


设置 sharey='all'之后,Y轴刻度保持一致,这样比较曲线才有意义。
上面的示例中 X轴刻度是一致的,如果不一致,可以用 sharex 属性来设置。

3. 复杂的布局

3.1. 不规则的网格

除了规则的网格布局,还可以通过 GridSpec 设置不规则的网格。
比如:

rows, cols = 3, 3
grid = plt.GridSpec(rows, cols) plt.subplot(grid[0, :2])
plt.subplot(grid[0, 2]) plt.subplot(grid[1, 0])
plt.subplot(grid[1, 1:]) plt.subplot(grid[2, :])


上例中设置了3行3列的网格,但是不是每个图形占用几个网格是可以调整的。

3.2. 嵌套图形

除了网格,还可以通过相对定位的方式来绘制多个子图。

fig = plt.figure()

fig.add_axes([0.1, 0.1, 1, 1])
fig.add_axes([0.3, 0.3, 0.3, 0.3])
fig.add_axes([0.7, 0.6, 0.3, 0.2])


上面按相对位置添加子图的函数 add_axes的参数是一个4元列表
这个列表4个元素的含义:

  1. 第一个元素表示子图左下角距离画布左边的距离占画布总宽度的比例
  2. 第二个元素表示子图左下角距离画布底边的距离占画布总高度的比例
  3. 第三个元素表示子图宽度占画布总宽度的比例
  4. 第三个元素表示子图高度占画布总高度的比例

注意,这里的4个值都是比例

4. 总结回顾

Matplotlib 中的每个子图可以有自己的标签、大小、位置和样式,可以方便地组合成一个复杂的图形。
我们一般在下列场景中使用子图:

  1. 数据可视化:将多个数据集在同一张图中显示,进行对比和分析。
  2. 图表组合:将多个图表组合在一起,形成一个综合性的图形。
  3. 数据分析:将多个数据集在同一张图中显示,进行筛选和筛选。
  4. 可视化规范化:将多个来源不同的数据集在同一张图中显示,保证图形的一致性和准确性。

【matplotlib基础】--子图的更多相关文章

  1. 数据分析与展示——Matplotlib基础绘图函数示例

    Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...

  2. Matplotlib基础图形之散点图

    Matplotlib基础图形之散点图 散点图特点: 1.散点图显示两组数据的值,每个点的坐标位置由变量的值决定 2.由一组不连续的点组成,用于观察两种变量的相关性(正相关,负相关,不相关) 3.例如: ...

  3. Matplotlib基础知识

    Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y轴刻度标签 ...

  4. matplotlib基础

    Matplotlib 基础 注:本文中的程序都默认引入了numpy库和matplotlib库,并且分别简写为np与plt:如果读者不知道怎么使用numpy库,可以移步到这一博客上进行简单的学习 一.简 ...

  5. Matplotlib基础使用

    matplotlib 一.Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis 水平和垂直的轴线 x轴和y轴刻度 tick 刻度标示坐标轴的分隔,包括最小刻度 ...

  6. 模块简介与matplotlib基础

    模块简介与matplotlib基础 1.基本概念 1.1数据分析 对已知的数据进行分析,提取出一些有价值的信息. 1.2数据挖掘 对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息. 1.3数据 ...

  7. [笔记]SciPy、Matplotlib基础操作

    NumPy.SciPy.Matplotlib,Python下机器学习三大利器.上一篇讲了NumPy基础操作,这节讲讲SciPy和Matplotlib.目前接触到的东西不多,以后再遇到些比较常用的再更新 ...

  8. 第二周 数据分析之展示 Matplotlib基础绘图函数实例

    Pyplot基础图表函数 Pyplot饼图的绘制: Pyplot直方图的绘制: Pyplot极坐标图的绘制: Pyplot散点图的绘制: 单元小结: import numpy as np import ...

  9. matplotlib基础知识全面解析

    图像基本知识: 通常情况下,我们可以将一副Matplotlib图像分成三层结构: 1.第一层是底层的容器层,主要包括Canvas.Figure.Axes: 2.第二层是辅助显示层,主要包括Axis.S ...

  10. python数据图形化—— matplotlib 基础应用

    matplotlib是python中常用的数据图形化工具,用法跟matlab有点相似.调用简单,功能强大.在Windows下可以通过命令行 pip install matplotlib 来进行安装. ...

随机推荐

  1. 卸载与重装Vue3及项目文件重创错误

    卸载与重装Vue3及项目文件的重创错误 首先先来个vue的卸载命令,直接win+R打开cmd npm uninstall -g @vue/cli   或     yarn global remove ...

  2. Ubuntu 18.04 (Bionic) 简单快速的安装mongodb

    按步骤走,不带脑子式安装(注意4.0版本mongodb官方已经不再支持,以下代码中可以修改mongodb版本号安装,目前最新版为6.0,如果懒得改直接用也可以,文章后边第三章第一条代码会直接升级为最新 ...

  3. 2023-05-27:给你一个只包含小写英文字母的字符串 s 。 每一次 操作 ,你可以选择 s 中两个 相邻 的字符,并将它们交换。 请你返回将 s 变成回文串的 最少操作次数 。 注意 ,输入数据

    2023-05-27:给你一个只包含小写英文字母的字符串 s . 每一次 操作 ,你可以选择 s 中两个 相邻 的字符,并将它们交换. 请你返回将 s 变成回文串的 最少操作次数 . 注意 ,输入数据 ...

  4. Java(循环语句,数组)

    Java循环 1.while while( 表达式 ) { //循环内容 } 2.do while do { //循环内容 }while(表达式); 3.for for(初始化; 表达式; 更新) { ...

  5. 【Ubuntu22.04】配置静态IP地址和FTP服务

    ## 一.配置静态IP 1. 使用命令`ip a`查看当前网卡名称,Ubuntu22.04默认网卡为ens33: ![](https://img2023.cnblogs.com/blog/308121 ...

  6. 20200630 excel365 选中一个单元格,对应的行和列都高亮

    Excel默认只高亮选中单元格的行标和列标,在整理数据时容易眼花,如能把这一行和列都高亮岂不是更好.方法在此: 1 打开"开发工具"菜单 默认这一项是隐藏的.文件-选项-自定义功能 ...

  7. 读少写多的条件下 ConcurrentHashMap 和 ReadWriteLock 的选择

    场景是这样的:两个对象往一个 Map 里循环写入,另外一个对象偶尔读一次,写的频率比读的频率高很多.希望实现的是读的时候暂停写入.CocurrentHashMap 和 ReadWriteLock 各有 ...

  8. GPU技术在大规模数据集处理和大规模计算中的应用

    目录 GPU 技术在大规模数据集处理和大规模计算中的应用 随着深度学习在人工智能领域的快速发展,大规模数据处理和大规模计算的需求日益增长.GPU(图形处理器)作为现代计算机的重要部件,被广泛应用于这些 ...

  9. 聊聊Excel解析:如何处理百万行EXCEL文件

    一.引言 Excel表格在后台管理系统中使用非常广泛,多用来进行批量配置.数据导出工作.在日常开发中,我们也免不了进行Excel数据处理. 那么,如何恰当地处理数据量庞大的Excel文件,避免内存溢出 ...

  10. k3s 基础 —— 配置 loki

    官方文档 核心组件 3 个 chart: promtail 这是一个 agent 代理客户端,用于收集日志,将日志传送给 loki loki 核心组件,主要功能是日志数据的写入与分析.包含 gatew ...