[matplotlib] 103. legendのクリックイベントでプロットの表示/非表示きりかえ

matplotlib

はじめに

matplotlibのlegendのラインをクリックすることでプロットの表示/非表示を切り替える方法について説明する。

コード&解説

モジュールのインポート

バージョン

データの読み込み

fitbitで計測した心拍数データを用いる。fitbit APIによるデータの取得については下記記事で解説した。
データの形式としては、時間と1分間あたりの心拍数となる。1日ごとのデータなので3日分読み込む。

[fitbit] 2. PythonでFitbit APIを使ってデータ取得 その2 fitbit-pythonによる睡眠データの取得とmatplotlibによる表示
fitbitとは、心拍数、歩数や睡眠をトラッキングするために腕に着用するタイプのスマートウォッチです。日々の健康状態を把握するのにとても役立っています。ここでは、アプリの登録からtokenの取得までを解説したその1の続きとして、Fitbit APIを使って睡眠データを取得してmatplotlibで表示するところまで解説します。

pd.to_datetime()によるデータ変換

pd.to_datetime()により、datetime形式に変換したデータを入手しておく。

心拍数の経時変化をプロット

formatter = mdates.DateFormatter(“%H:%M”)とすることでx軸を時間形式の表示としている。
ごちゃっとしてわかりにくい図となっている。

凡例のラインをクリックすることでデータ選択が可能な図

凡例とplotを対応させる

凡例に表示されている線と図に表示されている線を対応づける。その際に、set_pickerで凡例の線のピッキングを有効にし、set_pickradiusでクリックの有効範囲を少々広げておく。

クリックイベントの設定

クリックした凡例に対応する図中のプロットの透明度を取得する。透明度が0.3以外の時に透明度を0.3とし、透明度が0.3の時には透明度を1にする。
fig.canvas.draw()で図を更新する。

クリックイベントの有効化

凡例のラインをクリックすることで強調したいデータをえらぶことができるので、ごちゃっとしてわかりにくい図を見やすくすることができた。

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

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

参考

Legend picking — Matplotlib 3.8.3 documentation

コメント