简介
在本实验中,我们将学习如何使用 Matplotlib 通过 HBoxDivider 和 VBoxDivider 类来创建子图。我们将用一个简单的例子展示如何使用这些类来排列多个子图。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到 笔记本 标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
导入所需库
我们首先导入所需的库——matplotlib 和 numpy。
import matplotlib.pyplot as plt
import numpy as np
创建数据
我们创建两个 NumPy 数组,用作子图的数据。
arr1 = np.arange(20).reshape((4, 5))
arr2 = np.arange(20).reshape((5, 4))
使用 HBoxDivider 创建子图
我们使用 HBoxDivider 类并排创建两个子图。我们还调整了坐标轴的位置,以便它们具有相等的高度,同时保持其宽高比。
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.imshow(arr1)
ax2.imshow(arr2)
pad = 0.5 ## 以英寸为单位的间距
divider = HBoxDivider(
fig, 111,
horizontal=[Size.AxesX(ax1), Size.Fixed(pad), Size.AxesX(ax2)],
vertical=[Size.AxesY(ax1), Size.Scaled(1), Size.AxesY(ax2)])
ax1.set_axes_locator(divider.new_locator(0))
ax2.set_axes_locator(divider.new_locator(2))
plt.show()
使用 VBoxDivider 创建子图
我们使用 VBoxDivider 类创建两个上下排列的子图。我们调整坐标轴的位置,以便它们具有相等的宽度,同时保持其宽高比。
fig, (ax1, ax2) = plt.subplots(2, 1)
ax1.imshow(arr1)
ax2.imshow(arr2)
divider = VBoxDivider(
fig, 111,
horizontal=[Size.AxesX(ax1), Size.Scaled(1), Size.AxesX(ax2)],
vertical=[Size.AxesY(ax1), Size.Fixed(pad), Size.AxesY(ax2)])
ax1.set_axes_locator(divider.new_locator(0))
ax2.set_axes_locator(divider.new_locator(2))
plt.show()
总结
在本实验中,我们学习了如何在 Matplotlib 中使用 HBoxDivider 和 VBoxDivider 类来创建子图。我们了解了如何调整坐标轴的位置,以便它们在保持宽高比的同时具有相等的高度或宽度。当我们需要在一个图形中排列多个子图时,这些类会很有用。