subplot是matplotlib中将多个图形排列在同一个画布上的函数,通过plt.subplot(m, n, p)将画布分为m行n列共m×n个子区域,并在第p个位置绘图(从1开始编号)。例如subplot(2,2,1)表示在2×2网格的第一位绘制图像。常用示例如同时绘制sin(x)、cos(x)、tan(x)和x²四个函数,每个占据一个子图区域。为避免标题或标签重叠,推荐使用plt.tight_layout()自动调整间距。更高效的用法是结合plt.subplots()返回子图对象的数组,便于复杂布局操作。每个子图可独立设置坐标轴标签、标题等属性。使用时需注意p不能超过m×n,且编号按行优先顺序进行。掌握subplot有助于高效组织多图对比展示,关键在于理解布局参数与合理排版。

在python中使用subplot函数绘图,主要是通过matplotlib.pyplot模块实现的。它可以将多个图形排列在一个画布上,方便对比或组织数据展示。
什么是subplot?
subplot(m, n, p) 将画布分成 m行n列 的子图区域,并选择第 p 个区域进行绘图(从左到右、从上到下编号)。
例如:subplot(2, 2, 1) 表示把图像分为2行2列共4个子图,现在在第1个位置绘图。
基本用法示例
下面是一个绘制四个不同图形的例子:
立即学习“Python免费学习笔记(深入)”;
import matplotlib.pyplot as plt import numpy as np <h1>生成数据</h1><p>x = np.linspace(0, 10, 100)</p> <div class="aritcle_card"> <a class="aritcle_card_img" href="/ai/1104"> <img src="https://img.php.cn/upload/ai_manual/001/503/042/68b6c5d39a38c971.png" alt="阿里云-虚拟数字人"> </a> <div class="aritcle_card_info"> <a href="/ai/1104">阿里云-虚拟数字人</a> <p>阿里云-虚拟数字人是什么? ...</p> <div class=""> <img src="/static/images/card_xiazai.png" alt="阿里云-虚拟数字人"> <span>2</span> </div> </div> <a href="/ai/1104" class="aritcle_card_btn"> <span>查看详情</span> <img src="/static/images/cardxiayige-3.png" alt="阿里云-虚拟数字人"> </a> </div> <h1>子图1</h1><p>plt.subplot(2, 2, 1) plt.plot(x, np.sin(x)) plt.title("sin(x)")</p><h1>子图2</h1><p>plt.subplot(2, 2, 2) plt.plot(x, np.cos(x)) plt.title("cos(x)")</p><h1>子图3</h1><p>plt.subplot(2, 2, 3) plt.plot(x, np.tan(x)) plt.title("tan(x)")</p><h1>子图4</h1><p>plt.subplot(2, 2, 4) plt.plot(x, x**2) plt.title("x^2")</p><h1>自动调整子图间距</h1><p>plt.tight_layout()</p><h1>显示图像</h1><p>plt.show()</p>
常用技巧和建议
使用subplot时注意以下几点更高效:
- 推荐使用
plt.subplots()创建多个子图对象,更适合复杂布局 - 用
plt.tight_layout()避免标题或标签重叠 - 每个子图可独立设置坐标轴标签、标题等
- 编号p从1开始,不要超过m×n
基本上就这些。掌握subplot后,你可以灵活地把多个图表组合在一起展示。不复杂但容易忽略细节,比如布局参数和自动排版。多练习几次就能熟练了。