はじめに
matplotlibのpatchesの、FancyArrowPatch、Arrowによりプロット上に矢印を表示する方法について説明する。
コード

解説
モジュールのインポートなど
バージョン
矢印の位置の設定
tailは矢印の尻で、headが頭となる。
プロットのデータ値を基準に矢印を表示
FancyArrowPatchで開始点と終了点を(x_tail, y_tail), (x_head, y_head)のように設定する。mutation_scaleでは先端の大きさを設定できる。
.add_patch(arrow)でプロットにarrowを表示できる。
右の図(axs[1])はプロットの表示範囲をx,y軸ともに0〜3にしているため、矢印が小さくなる。

プロットの表示範囲を基準に矢印を表示
FancyArrowPatchでtransform=axs[0].transAxesのようにすることでaxs[0]の相対的な位置を基準として、矢印を表示できる。
右の図(axs[1])はプロットの表示範囲をx,y軸ともに0〜3にしているが、表示範囲を基準としているため、大きさは変わらない。

Arrowによる矢印の表示
Arrowの場合、第2引数は終了点ではなく、x, yそれぞれの開始点と終了点の差分を設定する。

参考
Arrow guide — Matplotlib 3.1.2 documentation
matplotlib.patches.FancyArrowPatch — Matplotlib 3.1.2 documentation
コメント