import matplotlib.pyplot as plt
import numpy as np
# 创建2x2的子图布局
fig, axs = plt.subplots(2, 2)
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.exp(x)
y4 = np.log(x + 1)
# 在第一个子图中绘制折线图
axs[0, 0].plot(x, y1)
axs[0, 0].set_title('Sin Function')
# 在第二个子图中绘制折线图
axs[0, 1].plot(x, y2)
axs[0, 1].set_title('Cos Function')
# 在第三个子图中绘制折线图
axs[1, 0].plot(x, y3)
axs[1, 0].set_title('Exp Function')
# 在第四个子图中绘制折线图
axs[1, 1].plot(x, y4)
axs[1, 1].set_title('Log Function')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
代码步骤解释
- 导入必要的库:
import matplotlib.pyplot as plt
:导入Matplotlib的绘图模块,通常简写成plt
,用于创建和显示图形。
import numpy as np
:导入NumPy库,用于生成数值数据,np
是其常用别名。
- 创建2x2的子图布局:
fig, axs = plt.subplots(2, 2)
:使用plt.subplots
函数创建一个包含2行2列子图的图形对象fig
和一个二维数组axs
,其中axs
中的每个元素代表一个子图的坐标轴对象,通过这个二维数组可以方便地访问每个子图。
- 生成数据:
x = np.linspace(0, 10, 100)
:使用np.linspace
函数生成从0到10(包括0和10)的100个等间距的点,作为x轴数据。
y1 = np.sin(x)
:计算x轴数据对应的正弦值。
y2 = np.cos(x)
:计算x轴数据对应的余弦值。
y3 = np.exp(x)
:计算x轴数据对应的指数值。
y4 = np.log(x + 1)
:计算x轴数据对应的自然对数值(为避免对数中的0,对x加1)。
- 在每个子图中绘制折线图:
axs[0, 0].plot(x, y1)
:在第一行第一列的子图(axs[0, 0]
)中绘制x
和y1
组成的折线图。
axs[0, 0].set_title('Sin Function')
:为第一行第一列的子图设置标题为Sin Function
。
- 类似地,
axs[0, 1].plot(x, y2)
和axs[0, 1].set_title('Cos Function')
在第一行第二列的子图中绘制余弦函数折线图并设置标题。
axs[1, 0].plot(x, y3)
和axs[1, 0].set_title('Exp Function')
在第二行第一列的子图中绘制指数函数折线图并设置标题。
axs[1, 1].plot(x, y4)
和axs[1, 1].set_title('Log Function')
在第二行第二列的子图中绘制对数函数折线图并设置标题。
- 调整子图间距:
plt.tight_layout()
:自动调整子图参数,以确保子图标签、标题等不重叠,使布局更加紧凑美观。
- 显示图形:
plt.show()
:显示创建的包含所有子图的图形。