[matplotlib] 83. プロットに矢印を表示(matplotlib.patches FancyArrowPatch, Arrow)

matplotlib

はじめに

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

コード

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

解説

モジュールのインポートなど

バージョン

矢印の位置の設定

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

コメント