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

ipywidgets

はじめに

matplotlibのマウスイベントを使って、図中のfigureとaxesに出入りした際に色を変化させる方法について説明する。

コード

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

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

解説

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

jupyter labでインタラクティブな操作をするには、冒頭で%matplotlib widgetとする。
jupyter lnotebookの場合は%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)

参考

https://matplotlib.org/users/event_handling.html#mouse-enter-and-leave
https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.set_facecolor.html?highlight=set_facecolor#matplotlib.axes.Axes.set_facecolor

コメント