使用约束布局调整轴大小

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在数据可视化中,拥有清晰且可读的图表至关重要。然而,创建多个子图时,很难避免轴对象和标签之间的重叠。在这种情况下,我们可以在 Matplotlib 中使用一种名为“约束布局”的功能,它会自动调整子图大小,以防止轴对象和标签之间出现重叠。

虚拟机使用提示

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

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

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

导入所需库

我们首先导入创建子图和绘制数据所需的库。

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

定义示例绘图

我们定义一个函数,该函数创建一个带有 x 轴和 y 轴标签以及标题的简单折线图。

def example_plot(ax):
    ax.plot([1, 2])
    ax.set_xlabel('x-label', fontsize=12)
    ax.set_ylabel('y-label', fontsize=12)
    ax.set_title('Title', fontsize=14)

创建无约束布局的子图

我们创建一个 2x2 子图的图形,不使用“约束布局”。这会导致轴上的标签重叠。

fig, axs = plt.subplots(nrows=2, ncols=2, layout=None)

for ax in axs.flat:
    example_plot(ax)

创建具有约束布局的子图

我们创建相同的 2x2 子图,但这次我们使用“约束布局”。这会自动调整子图,以防止轴对象和标签之间出现重叠。

fig, axs = plt.subplots(nrows=2, ncols=2, layout='constrained')

for ax in axs.flat:
    example_plot(ax)

使用约束布局创建嵌套网格布局

我们通过使用带有“约束布局”的嵌套网格布局来创建一个更复杂的示例。这使我们能够对子图的布局有更多的控制权。

fig = plt.figure(layout='constrained')

gs0 = gridspec.GridSpec(1, 2, figure=fig)

gs1 = gridspec.GridSpecFromSubplotSpec(3, 1, subplot_spec=gs0[0])
for n in range(3):
    ax = fig.add_subplot(gs1[n])
    example_plot(ax)


gs2 = gridspec.GridSpecFromSubplotSpec(2, 1, subplot_spec=gs0[1])
for n in range(2):
    ax = fig.add_subplot(gs2[n])
    example_plot(ax)

plt.show()

总结

“约束布局”是 Matplotlib 中的一项实用功能,它会自动调整子图大小,以防止轴对象和标签之间出现重叠。在图形中创建多个子图时,该功能特别有用。按照本教程中概述的步骤操作,你可以创建清晰易读的图表,而不必担心标签重叠问题。

总结

恭喜你!你已完成“使用约束布局调整轴大小”实验。你可以在 LabEx 中练习更多实验以提升你的技能。