Matplotlib中subplot与subplots的核心区别与使用对比

Evan
Evan
发布时间:2026-10-14 | 4人浏览过
原创

本文对比Matplotlib中subplot与subplots两种子图绘制方式。虽然两者均能实现多图布局,但subplots通过一次性返回坐标轴数组并支持直接指定画板尺寸,简化了多子图操作;而subplot每次仅返回单个坐标对象,需多次调用。文章通过具体代码示例展示两者在实现相同视觉效果时的语法差异及适用场景。

前言:

许多开发者熟悉使用subplot来绘制子图,但subplots同样具备此功能。由于关于subplots的详细资料相对较少,本文旨在对两者进行对比分析,明确它们并非功能完全等同的工具。

对比开始:

具体需求为:绘制两张子图,并排显示在一行中,且两张子图内部的数据内容完全一致。

使用subplot的实现代码如下:


ax1 = plt.subplot(1,2,1)
ax1.scatter(positive['X1'], positive['X2'], s=50, marker='x', label='Positive')
ax1.scatter(negative['X1'], negative['X2'], s=50, marker='o', label='Negative')
ax1.legend()#添加图列就是右上角的点说明
ax2 = plt.subplot(1,2,2)
ax2.scatter(positive['X1'], positive['X2'], s=50, marker='x', label='Positive')
ax2.scatter(negative['X1'], negative['X2'], s=50, marker='o', label='Negative')
ax2.legend()#添加图列就是右上角的点说明

 

使用subplots的实现代码如下:


fig, ax = plt.subplots(figsize=(12,8),ncols=2,nrows=1)#该方法会返回画图对象和坐标对象ax,figsize是设置子图长宽(1200,800)
ax[0].scatter(positive['X1'], positive['X2'], s=50, marker='x', label='Positive')
ax[0].scatter(negative['X1'], negative['X2'], s=50, marker='o', label='Negative')
ax[0].legend()#添加图列就是右上角的点说明
ax[1].scatter(positive['X1'], positive['X2'], s=50, marker='x', label='Positive')
ax[1].scatter(negative['X1'], negative['X2'], s=50, marker='o', label='Negative')
ax[1].legend()#添加图列就是右上角的点说明

对比结果:

从代码可以看出,两者都能达成绘制子图的目标。主要区别在于:subplots会自动规划画布布局,并返回一个包含所有坐标轴对象的数组;而subplot每次调用仅返回单个坐标对象。此外,subplots允许在初始化时直接指定画布的整体尺寸。

参考博客:Matplotlib的子图subplot的使用

参考博客:subplots与figure函数参数解释说明以及简单的使用脚本实例

到此这篇关于Matplotlib实现subplot和subplots简单对比的文章就介绍到这了,更多相关Matplotlib subplot和subplots内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表