plt.subplot和plt.subpots绘制多个子图

大家好,我素洪小帅~

在同一张图中绘制多个子图,可以使用 Matplotlib 的 plt.subplotplt.subplots 函数。两者都能帮助你在一个窗口中创建多个子图,区别在于它们的使用方式和灵活性。

1. 使用 plt.subplot

plt.subplot 用于创建一个包含多个子图的画布,并在每个子图中绘制图形。你需要指定行数、列数以及子图的位置。

语法:
plt.subplot(nrows, ncols, index)
  • nrows:子图的行数。
  • ncols:子图的列数。
  • index:指定当前子图的位置,按照从左到右、从上到下的顺序编号(从 1 开始)。

示例:使用 plt.subplot 绘制 2x2 的子图

import matplotlib.pyplot as plt
import numpy as np

# 生成一些数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(-x)

# 创建 2x2 子图
plt.subplot(2, 2, 1)  # 第一行第一列
plt.plot(x, y1)
plt.title('Sine Wave')

plt.subplot(2, 2, 2)  # 第一行第二列
plt.plot(x, y2)
plt.title('Cosine Wave')

plt.subplot(2, 2, 3)  # 第二行第一列
plt.plot(x, y3)
plt.title('Tangent Wave')

plt.subplot(2, 2, 4)  # 第二行第二列
plt.plot(x, y4)
plt.title('Exponential Decay')

# 显示图形
plt.tight_layout()  # 自动调整子图之间的间距
plt.show()

2. 使用 plt.subplots

plt.subplots 是一种更灵活且简洁的方式来创建多个子图。它返回一个包含所有子图的 figure 对象和一个包含子图轴的数组,方便对各个子图进行更细致的控制。

语法:
fig, axes = plt.subplots(nrows, ncols)
  • nrows:子图的行数。
  • ncols:子图的列数。
  • 返回值:
    • fig:当前图形对象。
    • axes:一个包含多个子图轴的数组,可以通过索引来访问每个子图。

示例:使用 plt.subplots 绘制 2x2 的子图

import matplotlib.pyplot as plt
import numpy as np

# 生成一些数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(-x)

# 创建 2x2 子图
fig, axes = plt.subplots(2, 2)

# 绘制数据
axes[0, 0].plot(x, y1)
axes[0, 0].set_title('Sine Wave')

axes[0, 1].plot(x, y2)
axes[0, 1].set_title('Cosine Wave')

axes[1, 0].plot(x, y3)
axes[1, 0].set_title('Tangent Wave')

axes[1, 1].plot(x, y4)
axes[1, 1].set_title('Exponential Decay')

# 自动调整子图之间的间距
plt.tight_layout()

# 显示图形
plt.show()

3. 小技巧:

  • 使用 plt.tight_layout() 可以自动调整子图之间的间距,防止标签重叠。
  • plt.subplotplt.subplots 中,nrowsncols 可以自定义为任意大小的网格。
  • 你可以通过 axes 数组对每个子图进行更多自定义,例如修改标题、标签、刻度等。

总结:

  • plt.subplot 适用于简单的子图布局,但会显得稍微繁琐。
  • plt.subplots 更加灵活,适合创建多个子图并进行更精细的操作。

两者根据使用场景选择,plt.subplots 是现代 Matplotlib 推荐的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪小帅

靓仔靓女看过来~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值