はじめに
ipywidgetsのFloatSliderをつかって、matplotlib patchesのFancyArrowPatchで表示する矢印をプロット上の任意の位置に表示する方法について説明する。
コード

解説
モジュールのインポートなど
jupyter labでipywidgetsを表示するために%matplotlib widgetとする。詳細は下記記事に記した。

[ipywidgets] 19. Jupyter labでipywidgetsを動かす
jupyter labでipywidgetsを使おうとして、冒頭に%matplotlib notebookと入れても動作しません。
ここでは、jupyter labでipywidgetsを使う方法について説明します。
バージョン
矢印の位置の設定
tailは矢印の尻で、headが頭となる。
FloatSliderの設定
x,yの開始点と終了点をそれぞれFloatSliderで変化させる。
プロットの表示範囲を基準に矢印を表示
FancyArrowPatchで開始点と終了点を(x_tail.value, y_tail.value), (x_head.value, y_head.value)のように設定する。mutation_scaleでは先端の大きさを設定できる。
transform=ax.transAxesのようにすることでaxの相対的な位置を基準として、矢印を表示できる。
.add_patch(arrow)でプロットにarrowを表示する。
FloatSliderを変化させたときの動作
set_positionsで開始点と終了点をセットする。
widgetの表示
FloatSliderを変化させたときの矢印の変化


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