matplotlib 向任意位置添加子图 axes 函数详解

不晚
不晚
发布时间:2026-10-14| 5人浏览过
原创

本文详解matplotlib中axes函数的用法,该函数允许通过坐标或四元组在图像任意位置添加子图。文章对比了axes与subplot、subplots、subplot2grid的区别,重点说明axes支持子图重叠且不会自动覆盖原有子图的特性,适合需要灵活布局的绘图场景。

当前有效matplotlib版本为:3.4.1。

概述

axes()函数的功能与subplot()函数非常接近,两者均可向当前图像(figure)添加一个子图(Axes),并设定该子图为当前操作对象。主要区别在于,subplot()函数依赖参数确定子图在网格中的位置,而axes()函数则通过四个坐标值来精确定位子图的位置。

函数的定义签名为:matplotlib.pyplot.axes(arg=None, **kwargs)

函数的调用签名为:


# 在当前图像中添加一个铺满的子图
plt.axes()
# 根据rect位置添加一个子图
plt.axes(rect, projection=None, polar=False, **kwargs)
# 将ax设置为当前子图
plt.axes(ax)

函数的参数为:

  • arg : 取值为 None或四元组rect。
    • None:使用subplot(**kwargs)添加一个新的铺满窗口的子图。
    • 四元组rect:rect = [left, bottom, width, height],使用 ~.Figure.add_axes根据rect添加一个新的子图。
  • rect的取值为以左下角为绘制基准点,确定高度和宽度。rect的4个元素均应在[0,1]之间(即以图像比例为单位)。
  • projection: 控制子图的投影方式。{None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str},默认值为None ,即'rectilinear'。
  • polar:相当于设置projection='polar'。可选参数。布尔值,默认值为True。
  • sharex, sharey:用于设置共享x/y轴。可选参数。Axes对象。默认值为None。
  • lables:返回的子图对象的标签。可选参数。字符串。
  • **kwargs:用于向创建子图网格时用到的 ~matplotlib.gridspec.GridSpec类的构造函数传递关键字参数。可选参数。字典。

函数的返回值为: .axes.SubplotBase实例,或其他~.axes.Axes的子类实例。

函数原理

axes函数其实是Figure.add_subplot和Figure.add_axes方法的封装。源码为:


def axes(arg=None, **kwargs):
    fig = gcf()
    if arg is None:
        return fig.add_subplot(**kwargs)
    else:
        return fig.add_axes(arg, **kwargs)

案例:使用axes函数添加子图

根据输出可知,axes添加的子图是可以重叠的。

案例:混合应用subplot、subplots、subplot2grid、axes函数


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)
# 在图像0.5,0.5位置添加一个0.1宽0.1长的背景色为黑色的子图
plt.axes((0.5,0.5,0.1,0.1),facecolor='k')
plt.show()

axes函数与subplot、subplots、subplot2grid函数的对比

相同之处: axes函数与subplot、subplot2grid函数都是添加一个子图。

不同之处: axes函数可在图像中的任意位置添加子图。subplot、subplots、subplot2grid函数只能根据固定的子图网格位置添加子图。 axes函数创建的子图可重叠。subplot、subplots、subplot2grid函数创建的子图如果位置重叠,会覆盖掉原有的子图(删除原有子图)。

到此这篇关于matplotlib 向任意位置添加一个子图(axes)的文章就介绍到这了,更多相关matplotlib任意位置添加子图内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。