[matplotlib] 67. マウスのenter & leaveイベントで図中のfigureの色とaxesの色を変化させる

ipywidgets

はじめに

matplotlibを使って、マウスイベントを活用し、図上でマウスカーソルが動いた際にfigureやaxesの色を動的に変更する方法を解説します。特にマウスのenter(入る)とleave(出る)イベントに焦点を当てて説明します。

コード

解説

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

Jupyter Labでインタラクティブな操作をするには、冒頭で「%matplotlib widget」と指定します。Jupyter Notebookの場合は「%matplotlib notebook」を使用します。別ウィンドウで図を表示したい場合は「%matplotlib」と指定します。

バージョン

Outputの設定

print()を表示するためのOutputをdisplay()で表示しておきます。

イベントの設定

axesにカーソルが入った場合

event.inaxes.patch.set_facecolor(‘g’)を使用してaxesの色を緑に設定し、event.canvas.draw()で変更を画面に反映させます。

axesからカーソルが出た場合

event.inaxes.patch.set_facecolor(‘white’)を使ってaxesの背景色を白に設定し、event.canvas.draw()で画面を再描画します。

figureにカーソルが入った場合

event.canvas.figure.patch.set_facecolor(‘lightgreen’)を使用してfigureの背景色をライトグリーンに設定し、event.canvas.draw()で変更を画面に反映させます。

figureからカーソルが出た場合

event.canvas.figure.patch.set_facecolor(‘pink’)でfigureの背景色をピンクに設定し、event.canvas.draw()で変更を画面に反映させます。

図の表示

suptitleを使用して図全体のタイトルを表示できます。

xticklabelsとyticklabelsを空のリストに設定することで、軸の目盛りラベルを非表示にしています。

fig.canvas.mpl_connect(‘figure_enter_event’, enter_figure)のように記述してイベントを有効にします。これにより、下図のように左上のaxesにマウスカーソルを合わせると色が変化します。

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

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

jupyter notebookの場合

別ウインドウで表示(GUI)

まとめ

マウスイベントを活用することで、matplotlibでもインタラクティブな可視化が実現できます。enterとleaveイベントを利用したfigureやaxesの色変更は、ユーザーインターフェースを向上させる簡単かつ効果的な方法です。この技術をさらに発展させれば、より高度なインタラクティブ可視化が可能になります。

参考

https://matplotlib.org/users/event_handling.html#mouse-enter-and-leave
matplotlib.axes.Axes.set_facecolor — Matplotlib 3.10.6 documentation

コメント