简单的锚定艺术家

Beginner

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

简介

在本实验中,你将学习如何使用 Matplotlib 的 offsetbox 和 mpl_toolkits.axes_grid1 中的锚定辅助类。你将使用这些类创建一个包含文本框、圆形和比例尺的图形。

虚拟机提示

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

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

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

导入库

首先,你需要导入 Matplotlib 和必要的模块。

import matplotlib.pyplot as plt
from matplotlib.offsetbox import AnchoredText
from matplotlib.patches import Circle
from mpl_toolkits.axes_grid1.anchored_artists import AnchoredDrawingArea, AnchoredSizeBar

创建图形

使用 Matplotlib 的subplots()函数创建一个图形和轴对象。

fig, ax = plt.subplots()
ax.set_aspect(1.)

添加文本框

在图形中添加两个文本框,分别以不同的角为锚点,锚定在图形的左上角。

at = AnchoredText("图 1a",
                  loc='upper left', prop=dict(size=8), frameon=True,
                  )
at.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
ax.add_artist(at)

at2 = AnchoredText("图 1(b)",
                   loc='lower left', prop=dict(size=8), frameon=True,
                   bbox_to_anchor=(0., 1.),
                   bbox_transform=ax.transAxes
                   )
at2.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
ax.add_artist(at2)

绘制一个圆

在轴坐标中绘制一个圆。

ada = AnchoredDrawingArea(20, 20, 0, 0,
                          loc='upper right', pad=0., frameon=False)
p = Circle((10, 10), 10)
ada.da.add_artist(p)
ax.add_artist(ada)

添加一个尺寸条

在数据坐标中绘制一个长度为 0.1 的水平条,并在其下方添加一个固定的标签。

asb = AnchoredSizeBar(ax.transData,
                      0.1,
                      r"1$^{\prime}$",
                      loc='lower center',
                      pad=0.1, borderpad=0.5, sep=5,
                      frameon=False)
ax.add_artist(asb)

显示图形

使用 Matplotlib 的show()函数显示图形。

plt.show()

总结

在本实验中,你学习了如何使用 Matplotlib 的 offsetbox 和 mpl_toolkits.axes_grid1 中的锚定辅助类来创建一个包含文本框、圆形和尺寸条的图形。你可以使用这些类为你的图形添加信息丰富的注释和图形。