[ipywidgets] 29. 図上の任意の位置にインタラクティヴに矢印を表示(matplotlib.patches FancyArrowPatch)

ipywidgets

はじめに

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を変化させたときの矢印の変化

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

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

参考

Arrow guide — Matplotlib 3.1.2 documentation
matplotlib.patches.FancyArrowPatch — Matplotlib 3.1.2 documentation

コメント