Python使用matplotlib subplot绘制多个子图的示例
本文介绍如何在Python中使用matplotlib库的subplot函数绘制多个子图。通过设置画板大小、分辨率以及指定子图的行列布局,可以灵活地展示多组数据。文章提供了具体的代码示例,演示如何创建不同布局的子图并自定义线条颜色与样式,帮助读者快速掌握多子图绘制的核心技巧。
matplotlib subplot 基础用法
在使用 matplotlib 进行数据可视化时,经常需要在同一张画布上展示多组数据。通过 plt.subplot() 函数,我们可以将画板划分为多个区域,并在每个区域绘制独立的图表。以下是实现这一目标的关键步骤与参数说明:
- 设置画板属性:使用
plt.figure(figsize=(6,6), dpi=80)定义画布的物理尺寸(英寸)和分辨率(DPI),确保输出图像的清晰度与比例。 - 指定子图布局:通过
plt.subplot(nrows, ncols, index)将画板划分为nrows行ncols列的网格,并选择第index个位置进行绘制。例如,221表示两行两列布局中的第一个位置(左上角)。 - 绘制数据:使用
plt.plot(x, y)传入横轴和纵轴数据。可以通过color参数设置线条颜色(如'r'红色,'y'黄色,'g'绿色,'b'蓝色),利用linestyle参数设置线条样式(如'--'虚线,'-'实线,'-.'点划线,':'点线)。 - 画板管理:在复杂场景中,
plt.figure(1)用于明确指定当前操作的是编号为 1 的画板,确保绘图指令作用于正确的上下文。

示例一:两行两列布局
以下代码演示了如何在 2x2 的网格中绘制四个子图。每个子图使用不同的数据、颜色和线条样式,展示了 subplot 的基本布局能力。
import matplotlib.pyplot as plt
# 设置画板大小和分辨率
plt.figure(figsize=(6,6), dpi=80)
plt.figure(1)
# 子图1:左上角 (2行2列第1个)
ax1 = plt.subplot(221)
plt.plot([1,2,3,4],[4,5,7,8], color="r", linestyle="--")
# 子图2:右上角 (2行2列第2个)
ax2 = plt.subplot(222)
plt.plot([1,2,3,5],[2,3,5,7], color="y", linestyle="-")
# 子图3:左下角 (2行2列第3个)
ax3 = plt.subplot(223)
plt.plot([1,2,3,4],[11,22,33,44], color="g", linestyle="-.")
# 子图4:右下角 (2行2列第4个)
ax4 = plt.subplot(224)
plt.plot([1,2,3,4],[11,22,33,44], color="b", linestyle=":")
示例二:混合布局绘制
有时我们需要更灵活的布局,例如将部分区域合并或改变行列比例。以下示例展示了在 2x2 网格中,前两个子图占据上半部分,而第三个子图占据整个下半行(通过 plt.subplot(212) 实现两行一列的第二行)的情况。
import matplotlib.pyplot as plt
# 设置画板大小和分辨率
plt.figure(figsize=(6,6), dpi=80)
plt.figure(1)
# 子图1:左上角 (2行2列第1个)
ax1 = plt.subplot(221)
plt.plot([1,2,3,4],[4,5,7,8], color="r", linestyle="--")
# 子图2:右上角 (2行2列第2个)
ax2 = plt.subplot(222)
plt.plot([1,2,3,5],[2,3,5,7], color="y", linestyle="-")
# 子图3:下半部分 (2行1列第2个,即占满第二行)
ax3 = plt.subplot(212)
plt.plot([1,2,3,4],[11,22,33,44], color="g", linestyle="-.")
示例三:非对称网格布局
除了标准的 2x2 网格,我们还可以创建非对称的布局。例如,将画板分为两行,第一行包含两个子图,第二行包含一个横跨整个宽度的子图。或者使用 plt.subplot(122) 将画板分为一行两列,并选择右侧位置。以下代码展示了这种灵活的布局方式:
import matplotlib.pyplot as plt
# 设置画板大小和分辨率
plt.figure(figsize=(6,6), dpi=80)
# 明确指定画板
plt.figure(1)
# 子图1:左上角 (2行2列第1个)
ax1 = plt.subplot(221)
plt.plot([1,2,3,4],[4,5,7,8], color="r", linestyle="--")
# 子图2:左下角 (2行2列第3个)
ax2 = plt.subplot(223)
plt.plot([1,2,3,5],[2,3,5,7], color="y", linestyle="-")
# 子图3:右侧 (1行2列第2个,即占满右半部分)
ax3 = plt.subplot(122)
plt.plot([1,2,3,4],[11,22,33,44], color="g", linestyle="-.")总结
通过 matplotlib 的 subplot 函数,我们可以轻松地将多个图表组合在一张画布上。关键在于理解 nrows、ncols 和 index 的组合方式,以及合理设置画板属性。通过调整颜色和线条样式,可以增强图表的可读性和美观性。以上就是python使用matplotlib subplot绘制多个子图的示例的详细内容,更多关于python matplotlib多子图绘制的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













