せっかく生データを取得できるようになったので、記念にグラフを作ってみることにする。3ヶ月分のデータを2軸のグラフとしてプロットしてみたい。
方針は以下の通り。
- 認証
- djchen/oauth2-fitbitを使用しOAuth2をパスする
- 過去エントリを参照のこと
- 取得
- BMI/体重/(体脂肪率)取得APIを叩く
- 期間は3ヶ月分とする。APIを3回叩くことになる。
- 出力
- gnuplotで描画するため、csvとする
- 体重、体脂肪率はFitbitAPIから得たデータを加工なしにそのまま使う
- 日付についてFitbitのyyyy-MM-ddからgnuplotのyyyy/MM/ddに変換する
- 描画
- gnuplot。学生のとき以来だな^^
- sakura vps の CentOS6 に yum で入れる。便利になったものだ。
gnuplot
sakura vpsにgnuplotをインストール。当然 X11とかないのでバッファに出力するだけ。
$ pwd
/home/ikuty
$ sudo yum install gnuplot
gnuplotスクリプトは以下の通り。やはり単にプロットするだけなら R より GnuPlot の方が楽で良い。
set xdata time
set timefmt "%Y/%m/%d"
set datafile separator ","
set terminal png
set output "plot.png"
set y2tics
set y2range [12:22]
set multiplot
set xlabel "date"
set ylabel "weight[kg]"
set y2label "fat[%]"
set grid
plot "plot.csv" using 1:2 with lp axes x1y1
replot "plot.csv" using 1:3 with lp axes x1y2
外部ファイルを読み込む。
$ gnuplot < gnu.plot
結果
Arialフォントが無いので文字がとても汚いが、グラフ専用ツールなので形にはなる。
朝晩2回計測しているのだがWiththingsとの連携だと1日のうち最後に計測した値だけがFitbitにストアされる。なので、以下のグラフは夜の体重、体脂肪率のグラフということになる。それではハッキリ言って意味がない。
※体脂肪率が下がっていないのに体重が落ちているのは、筋肉量が落ちている、ということ。カロリー収支のマイナス幅が大きすぎて筋肉量も減らしてしまっているのかも。