简介
在本实验中,我们将学习如何在 Matplotlib 中创建带锚定的方向箭头。带锚定的方向箭头是指向特定方向并锚定在绘图上的箭头。这些箭头对于在绘图中指示特定方向或取向很有用。我们将学习如何创建简单箭头以及高对比度和旋转箭头。
虚拟机提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入必要的库
首先,我们需要导入必要的库,例如 Matplotlib、NumPy、Matplotlib 字体管理器,以及来自 mpl_toolkits.axes_grid1 的 AnchoredDirectionArrows。我们将使用这些库来创建带锚定的方向箭头。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as fm
from mpl_toolkits.axes_grid1.anchored_artists import AnchoredDirectionArrows
创建一个绘图
接下来,我们将使用 NumPy 创建一个简单的绘图。这个绘图将作为带锚定方向箭头的背景。
## 为了可重复性固定随机状态
np.random.seed(19680801)
fig, ax = plt.subplots()
ax.imshow(np.random.random((10, 10)))
创建一个简单箭头
现在,我们将使用AnchoredDirectionArrows类创建一个简单的带锚定方向箭头。这个箭头将在绘图中指示 X 和 Y 方向。
## 简单示例
simple_arrow = AnchoredDirectionArrows(ax.transAxes, 'X', 'Y')
ax.add_artist(simple_arrow)
创建一个高对比度箭头
接下来,我们将创建一个高对比度的带锚定方向箭头。这个箭头将有白色轮廓和黑色填充。
high_contrast_part_1 = AnchoredDirectionArrows(
ax.transAxes,
'111', r'11$\overline{2}$',
loc='upper right',
arrow_props={'ec': 'w', 'fc': 'none', 'alpha': 1,
'lw': 2}
)
ax.add_artist(high_contrast_part_1)
high_contrast_part_2 = AnchoredDirectionArrows(
ax.transAxes,
'111', r'11$\overline{2}$',
loc='upper right',
arrow_props={'ec': 'none', 'fc': 'k'},
text_props={'ec': 'w', 'fc': 'k', 'lw': 0.4}
)
ax.add_artist(high_contrast_part_2)
创建一个旋转箭头
在这一步中,我们将创建一个旋转的带锚定方向箭头。这个箭头将旋转 30 度,并使用衬线字体。
fontprops = fm.FontProperties(family='serif')
rotated_arrow = AnchoredDirectionArrows(
ax.transAxes,
'30', '120',
loc='center',
color='w',
angle=30,
fontproperties=fontprops
)
ax.add_artist(rotated_arrow)
改变箭头方向
在这一步中,我们将创建三个指向不同方向的带锚定方向箭头。这些箭头将具有不同的长度和宽高比。
a1 = AnchoredDirectionArrows(
ax.transAxes, 'A', 'B', loc='lower center',
length=-0.15,
sep_x=0.03, sep_y=0.03,
color='r'
)
ax.add_artist(a1)
a2 = AnchoredDirectionArrows(
ax.transAxes, 'A', ' B', loc='lower left',
aspect_ratio=-1,
sep_x=0.01, sep_y=-0.02,
color='orange'
)
ax.add_artist(a2)
a3 = AnchoredDirectionArrows(
ax.transAxes, ' A', 'B', loc='lower right',
length=-0.15,
aspect_ratio=-1,
sep_y=-0.1, sep_x=0.04,
color='cyan'
)
ax.add_artist(a3)
显示绘图
最后,我们将显示包含所有带锚定方向箭头的绘图。
plt.show()
总结
在本实验中,我们学习了如何在 Matplotlib 中创建带锚定方向的箭头。我们创建了简单的箭头,以及高对比度和旋转的箭头。我们还学习了如何改变箭头的方向和宽高比。带锚定方向的箭头对于在绘图中指示特定方向或取向很有用。