[matplotlib] 68. 散布図上でクリックした点の色を変える

ipywidgets

はじめに

このチュートリアルでは、matplotlibを使って散布図上の点をクリックして色を変更する方法を解説します。ユーザーインタラクションを活用して、データポイントを視覚的に強調する手法は、データ分析や可視化において非常に有用です。

コード

解説

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

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

バージョン

散布図の表示

x座標とy座標それぞれに0〜10のランダムな値を持つ点を、緑色の丸で表示します。
mewはマーカーの線幅、mecはマーカーの線の色、msはマーカーのサイズを指定するパラメータです。
picker=10は、点をクリックしたと認識する許容範囲(ピクセル単位)を設定します。なる。

Outputの設定

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

イベントの設定

@out.capture(clear_output=True)を使用して、常に最新の情報のみが表示されるようにします。
まず、event.artistでクリックした点を取得します。
次に、get_xdataとget_ydataを使って、その点を含むデータセット全体を取得します。
続いて、event.indでクリックした点の正確なインデックスを特定します。
そして、ax.plot(xdata[ind], ydata[ind],”C6o”,ms=12)を実行し、クリックした点と同じ座標に新しいピンク色の点をプロットします。
最後に、fig.canvas.draw()を呼び出して図を更新することで、新しいプロットが表示されます。

イベントの有効化

fig.canvas.mpl_connect(‘pick_event’, onpick)を使ってイベントを有効にしてから、plt.show()で図を表示します。下図のように、クリックした点のみがピンク色に変わります。

jupyter notebookの場合

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

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

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

実装時の注意点

  • matplotlibのバージョンによって動作が異なる場合があるため、最新版の使用を推奨します。
  • 大量のデータポイントがある場合は、処理が遅くなる可能性があります。その場合はデータの間引きや最適化を検討しましょう。
  • インタラクティブな機能はJupyter NotebookやJupyter Labで実行する場合、%matplotlib widgetまたは%matplotlib notebookを使用すると良いでしょう。
  • 複雑なイベント処理を行う場合は、matplotlib.widgetsモジュールの活用も検討してください。

このテクニックを活用することで、データ探索時の視覚的分析が格段に向上します。特に外れ値の検出や特定のデータポイントの追跡に役立ちます。

参考

https://matplotlib.org/users/event_handling.html#object-picking
numpy.random.rand — NumPy v1.14 Manual

コメント