简介
在本实验中,我们将学习如何使用 Matplotlib Axes Divider 为图形中的子图创建自定义布局。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
在本实验中,我们将学习如何使用 Matplotlib Axes Divider 为图形中的子图创建自定义布局。
虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
我们将首先导入本实验所需的库:matplotlib.pyplot 和 mpl_toolkits.axes_grid1。
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import Divider
import mpl_toolkits.axes_grid1.axes_size as Size
我们将创建一个图形对象,并使用 fig.add_axes 方法设置四个坐标轴对象。
fig = plt.figure(figsize=(5.5, 4))
rect = (0.1, 0.1, 0.8, 0.8)
ax = [fig.add_axes(rect, label="%d" % i) for i in range(4)]
我们将使用 mpl_toolkits.axes_grid1.axes_size 模块中的 Divider 类以及 AxesX 和 AxesY 类来设置坐标轴分隔器。然后,我们将使用 new_locator 方法来设置每个坐标轴的位置。
horiz = [Size.AxesX(ax[0]), Size.Fixed(.5), Size.AxesX(ax[1])]
vert = [Size.AxesY(ax[0]), Size.Fixed(.5), Size.AxesY(ax[2])]
divider = Divider(fig, rect, horiz, vert, aspect=False)
ax[0].set_axes_locator(divider.new_locator(nx=0, ny=0))
ax[1].set_axes_locator(divider.new_locator(nx=2, ny=0))
ax[2].set_axes_locator(divider.new_locator(nx=0, ny=2))
ax[3].set_axes_locator(divider.new_locator(nx=2, ny=2))
我们将使用 set_xlim、set_ylim 和 tick_params 方法来自定义每个坐标轴的范围和外观。
ax[0].set_xlim(0, 2)
ax[1].set_xlim(0, 1)
ax[0].set_ylim(0, 1)
ax[2].set_ylim(0, 2)
for ax1 in ax:
ax1.tick_params(labelbottom=False, labelleft=False)
最后,我们将使用 show 方法来显示绘图。
plt.show()
在本实验中,我们学习了如何使用 Matplotlib 坐标轴分隔器为图形中的子图创建自定义布局。我们创建了一个图形对象并设置了四个坐标轴对象,然后使用坐标轴分隔器将坐标轴排列在网格中。我们自定义了每个坐标轴的范围和外观,并使用 show 方法显示了绘图。