箭头指南

向绘图中添加箭头补丁。

箭头通常用于标注绘图。本教程演示如何绘制在更改绘图上的数据限制时行为不同的箭头。通常,绘图上的点可以固定在“数据空间”或“显示空间”中。当数据限制改变时,在数据空间中绘制的一些东西就会移动——例如散点图中的点。当更改数据限制时,显示空间中绘制的某些内容将保持静态-例如图形标题或轴标签。

箭头由一个头部(可能还有一个尾巴)和一个绘制在起点和终点之间的杆组成,从现在起称为“锚点”。这里我们展示了三种绘制箭头的用例,这取决于头部或锚点是否需要在数据或显示空间中固定:

  1. 头部形状固定在显示空间,定位点固定在数据空间
  2. 头部形状和定位点固定在显示空间中
  3. 整个补丁固定在数据空间中

下面依次介绍每个用例。

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
x_tail = 0.1
y_tail = 0.1
x_head = 0.9
y_head = 0.9
dx = x_head - x_tail
dy = y_head - y_tail

显示空间中固定的头部形状和数据空间中固定的定位点

如果要对绘图进行注释,并且在平移或缩放绘图时不希望箭头更改形状或位置,则此选项非常有用。注意,当轴限制发生变化时

在这种情况下,我们使用 patches.FancyArrowPatch

请注意,更改轴限制时,箭头形状保持不变,但定位点移动。

fig, axs = plt.subplots(nrows=2)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (dx, dy),
                                 mutation_scale=100)
axs[0].add_patch(arrow)

arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (dx, dy),
                                 mutation_scale=100)
axs[1].add_patch(arrow)
axs[1].set_xlim(0, 2)
axs[1].set_ylim(0, 2)
arrow guide

出:

(0.0, 2.0)

头部形状和定位点固定在显示空间中

如果要对绘图进行注释,并且在平移或缩放绘图时不希望箭头更改形状或位置,则此选项非常有用。

在这种情况下,我们使用 patches.FancyArrowPatch ,并传递关键字参数 transform=ax.transAxes 在哪里? ax 是我们要添加补丁的轴。

请注意,更改轴限制时,箭头形状和位置保持不变。

fig, axs = plt.subplots(nrows=2)
arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (dx, dy),
                                 mutation_scale=100,
                                 transform=axs[0].transAxes)
axs[0].add_patch(arrow)

arrow = mpatches.FancyArrowPatch((x_tail, y_tail), (dx, dy),
                                 mutation_scale=100,
                                 transform=axs[1].transAxes)
axs[1].add_patch(arrow)
axs[1].set_xlim(0, 2)
axs[1].set_ylim(0, 2)
arrow guide

出:

(0.0, 2.0)

数据空间中固定的头部形状和锚定点

在这种情况下,我们使用 patches.Arrow

请注意,当轴限制发生更改时,箭头形状和位置会发生更改。

fig, axs = plt.subplots(nrows=2)

arrow = mpatches.Arrow(x_tail, y_tail, dx, dy)
axs[0].add_patch(arrow)

arrow = mpatches.Arrow(x_tail, y_tail, dx, dy)
axs[1].add_patch(arrow)
axs[1].set_xlim(0, 2)
axs[1].set_ylim(0, 2)
arrow guide

出:

(0.0, 2.0)

脚本的总运行时间: (0分1.295秒)

关键词:matplotlib代码示例,codex,python plot,pyplot Gallery generated by Sphinx-Gallery