はじめに
matplotlibのマウスイベントとピックイベントを使って、散布図中のクリックした点に関連付けられたデータを下図に表示する方法について説明する。
コード
解説
モジュールのインポートなど
jupyter labでインタラクティブな操作をするには、冒頭で%matplotlib widgetとする。
jupyter lnotebookの場合は%matplotlib notebookとなる。
別ウインドウで図を表示するには%matplotlibとする。
バージョン
データの作成
np.random.rand(30, 100)でランダムデータを作成して、平均値と標準偏差をそれぞれxs, ysとする。
上図の表示
mfcはマーカーの色で、mewはマーカーの線幅であり、mecはマーカーの線幅の色で、 msはマーカーの大きさとなる。
picker=5はクリックした点をクリックしたとみなす許容範囲の設定となる。
下図の表示
plotにデータをセットすることで図を表示するので、空のリストでプロットを作成しておく。
図中へテキストを挿入できるax1.textでtransform=ax1.transAxesとすることで下図のaxesの相対的な座標位置にテキストを入れることができる。最初にからのテキストを入れておいて、イベント中でset_textとすることでテキストを表示する。
onpickイベントの設定
まず、クリックした点をevent.artistで取得する。
次に、get_xdataとget_ydataでその点を含む一連のデータを得る。
次にevent.indでその点のインデックスを取得する。
そして、ax0.plot(xdata[ind], ydata[ind],”o”,ms=12)でクリックした点と同じ座標に新たな点をプロットする。
plot.set_data((np.arange(100),X[ind,:]))で下図に選択したデータを表示する。
texts.set_text()でテキストをセットして下図に表示する。
最後にfig.canvas.draw()で図を更新することでイベントの内容が図に反映される。
イベントの有効化
fig.canvas.mpl_connect(‘pick_event’, onpick)でイベントを有効にしてから、plt.show()で図を表示する。下図のようにクリックした点の色が変わり、その点のデータが下図に表示される。
コメント