自定义 Matplotlib 脊柱(坐标轴框架)

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,你将学习如何在 Matplotlib 中自定义脊柱(坐标轴框架)。脊柱是连接轴刻度标记并划定数据区域边界的线条。默认情况下,Matplotlib 在绘图的所有四条边上显示脊柱。但是,你可能需要自定义这些脊柱以更好地突出显示你的数据。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入 Matplotlib 和 NumPy

首先,我们需要导入 Matplotlib 和 NumPy 库来创建我们的图表。我们将使用 NumPy 为我们的图表创建示例数据。

import matplotlib.pyplot as plt
import numpy as np

创建示例数据

接下来,我们将使用 NumPy 为我们的图表创建示例数据。我们将在 0 到 2π之间生成 100 个数据点,并计算它们对应的正弦值。

x = np.linspace(0, 2 * np.pi, 100)
y = 2 * np.sin(x)

创建子图

我们将创建三个子图来展示不同的脊柱(坐标轴框架)自定义设置。我们将使用紧凑布局来确保标签不会与坐标轴重叠。

fig, (ax0, ax1, ax2) = plt.subplots(nrows=3, layout='constrained')

为四条边自定义脊柱(坐标轴框架)

在第一个子图中,我们将在绘图的四条边上都显示脊柱(坐标轴框架)。我们可以使用容器ax.spines来访问每个子图的脊柱(坐标轴框架)。然后,我们可以使用各种方法来自定义脊柱(坐标轴框架)。

ax0.plot(x, y)
ax0.set_title('Normal Spines')

为底部和左侧自定义脊柱(坐标轴框架)

在第二个子图中,我们将仅在绘图的底部和左侧显示脊柱(坐标轴框架)。我们可以使用set_visible方法隐藏绘图右侧和顶部的脊柱(坐标轴框架)。

ax1.plot(x, y)
ax1.set_title('Bottom-Left Spines')

## Hide the right and top spines
ax1.spines.right.set_visible(False)
ax1.spines.top.set_visible(False)

将脊柱(坐标轴框架)边界限制在数据范围内进行自定义

在第三个子图中,我们将显示边界被限制在数据范围内的脊柱(坐标轴框架)。我们可以使用set_bounds方法将每个脊柱(坐标轴框架)的范围限制在数据范围内。

ax2.plot(x, y)
ax2.set_title('Spines with Bounds Limited to Data Range')

## Only draw spines for the data range, not in the margins
ax2.spines.bottom.set_bounds(x.min(), x.max())
ax2.spines.left.set_bounds(y.min(), y.max())
## Hide the right and top spines
ax2.spines.right.set_visible(False)
ax2.spines.top.set_visible(False)

显示绘图

最后,我们将使用show方法显示绘图。

plt.show()

总结

在本实验中,你学习了如何在 Matplotlib 中自定义脊柱(坐标轴框架)。具体来说,你学习了如何在绘图的特定边上显示脊柱(坐标轴框架)、隐藏绘图特定边上的脊柱(坐标轴框架)以及将每个脊柱(坐标轴框架)的范围限制在数据范围内。通过自定义脊柱(坐标轴框架),你可以创建能更好地突出显示数据并提高其整体可读性的绘图。