gnuplotによる体重変化のグラフ作成

グラフの構成

グラフは横軸に日付、縦軸に体重をとるのですが、実際には横軸に2000年12月31日から何日経過したかをとっています。つまり、2001年1月1日は1、1月2日は2‥‥12月31日は365となります。日付はそれぞれの数に文字列を割り当てることで表示しています。日付を横軸にとる方法もあるようなのですが、直線近似をするときにうまくいかなかったので、結局この方法に落ち着きました。

さしあたって1ヶ月分を表示させるため、x軸の表示区間は1から31までです。

スクリプト

まずはweight.gplとして以下の内容で作成します。適宜変更してください。

set title "Weight 2001"                 # タイトル
set key                                 # 凡例表示
set grid                                # 格子線表示
set ylabel "Kg"                         # y軸の単位
set yrange [60:70]                      # y軸の表示区間
set ytics 60, 1, 70                     # y軸の目盛
set xlabel "Date"                       # x軸の単位
set xrange [1:31]                       # x軸の表示区間
set xtics ( \
        "1/1"          1,\
        "1/4"          4,\
        "1/7"          7,\
        "1/10"        10,\
        "1/13"        13,\
        "1/16"        16,\
        "1/19"        19,\
        "1/22"        22,\
        "1/25"        25,\
        "1/28"        28,\
        "1/31"        31 \
)                                       # x軸の目盛
                                        # 1のところには"1/1"と表示

set terminal png small color            # 出力はpngファイル

a=1                                     # 変数aの初期値を1、
b=1                                     # 変数bの初期値を1として
f(x)=a*x+b                              # 1次関数を考え、
fit f(x) "data.txt" using 2:3 via a,b   # aとbを最小2乗法で近似
                                        # データはdata.txtの2カラム目と
                                        # 3カラム目を使用する

plot "data.txt" using 2:3 title "Original" with linespoints,\
     f(x) title "NLLS" with lines,\
     "data.txt" using 2:3 smooth csplines title "Splines" with lines 
        # それぞれの使用ファイル、使用カラム、凡例タイトル、線種で
        # グラフを表示

データファイル

weight.gplの中で読み込まれるdata.txtは以下の形式で作成します。1カラム目は日付で、その行が何月何日のデータであるかを人間が理解するためのものであり、計算機は1カラム目を無視します。2カラム目がx軸、3カラム目がy軸のデータになります。上記のweight.gplの中の数箇所で

using 2:3
と指定している部分がその指定です。
1/1     1       65.0
1/2     2       64.0
1/3     3       64.1
1/4     4       63.8
1/5     5       64.2

各カラムの区切りはスペースまたはタブです。

あとはgnuplotにかけるだけ

これらのファイルを用意した後、weight.gplをgnuplotに読み込ませ、グラフを出力します。例えばLinuxでは

% gnuplot weight.gpl > graph.png

とすれば、graph.pngという画像ファイルが作成されます。

あとはdata.txtを日々更新してgnuplotで処理する作業の繰り返しなのですが、2月、3月と日が経つに連れて何日目か数えるのが大変になりますね。雛型ファイルとしてtemplate.txtを作成しました。ご利用ください。ただし、データのない日付の行はdata.txtに残しておくことはできないのでご注意を。

補足


yasunori@kimuralab.org