MST

星途 面试题库

面试题:Python中Matplotlib绘制多子图问题

在Python的Matplotlib库中,如何创建一个2x2的子图布局,并在每个子图中绘制不同的折线图?请写出关键代码,并解释每个步骤的作用。
28.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
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()

代码步骤解释

  1. 导入必要的库
    • import matplotlib.pyplot as plt:导入Matplotlib的绘图模块,通常简写成plt,用于创建和显示图形。
    • import numpy as np:导入NumPy库,用于生成数值数据,np是其常用别名。
  2. 创建2x2的子图布局
    • fig, axs = plt.subplots(2, 2):使用plt.subplots函数创建一个包含2行2列子图的图形对象fig和一个二维数组axs,其中axs中的每个元素代表一个子图的坐标轴对象,通过这个二维数组可以方便地访问每个子图。
  3. 生成数据
    • 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)。
  4. 在每个子图中绘制折线图
    • axs[0, 0].plot(x, y1):在第一行第一列的子图(axs[0, 0])中绘制xy1组成的折线图。
    • 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')在第二行第二列的子图中绘制对数函数折线图并设置标题。
  5. 调整子图间距
    • plt.tight_layout():自动调整子图参数,以确保子图标签、标题等不重叠,使布局更加紧凑美观。
  6. 显示图形
    • plt.show():显示创建的包含所有子图的图形。