はじめに
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にマウスカーソルを合わせると色が変化します。

jupyter notebookの場合

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

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