はじめに
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.9.2 documentation
コメント