[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)

参考

Event handling and picking — Matplotlib 3.3.2 documentation
matplotlib.axes.Axes.set_facecolor — Matplotlib 3.3.2 documentation

コメント