データが日にちや時間となっている時系列データをプロットするには,まず
set xdata time や set ydata time を使ってデータ
が日付型であることgnuplotに教え,さらに set timefmt で日
付/時間の表示がどのようになっているかを与える必要があります.始めに
データとしては以下のようなものを考えます.
2004-02-09 310
2004-02-10 185
2004-02-11 239
2004-02-12 132
2004-02-13 85
2004-02-14 57
2004-02-15 8
この日付のデータをgnuplotに読み込ませるには,timefmtとして
“%Y-%m-%d” を与えます.この例では月と日にちが10未満の時に頭にゼロを
パディングして桁数をそろえていますが,これをしなくとも(例えば
2004-2-9というデータでも)同じフォーマットで正しく読み込まれます.
gnuplot> set xdata time
gnuplot> set timefmt "%Y-%m-%d"
gnuplot> plot "sample.dat" using 1:2 with boxes
gnuplotでは日付/時間型データをかなり柔軟に読み込めるようになっていま
す.ファイル中のデータ表式と timefmtで与えるフォーマットの
対応の例を以下に挙げます.
データ表示形式 |
timefmt |
comment |
2004/4/6 |
%Y/%m/%d |
2004/04/06でも可 |
December/96 |
%B/%y |
spellingを間違えるとwarningがでます |
2004/Jan |
%Y/%b |
3文字の略名 |
1970/240 |
%Y/%j |
“%j”は一年間の第何日目(1-365) |
02:45:03 |
%H:%M:%S |
時間は24時間制 |
1076909172 |
%s |
1970年1月1日0時からの秒数 |
gnuplotは日付/時間型のデータをX座標データとして読み込むと,そのデー
タに合った形でX軸にメモリを表示します.上の一週間分のデータの例なら,
“月/日”が出力されます.しかしながら,ここではやや余分な”00:00″とい
う時間まで表示されています.出力の表示形式を制御するには set
format を用います.ここでのフォーマット指定は通常の数値出力とは異なり,UNIXのライブラリ
strftime関数でのフォーマットとなります.
gnuplot> set xdata time
gnuplot> set timefmt "%Y-%m-%d"
gnuplot> set format x "%b/%a"
gnuplot> plot "sample.dat" using 1:2 with boxes

上の表に挙げたフォーマットに加えて,この例のように “%a” という
timefmtにはない,曜日を出力するフォーマットを指定すること
が可能です.詳しくはstrftime関数のマニュアルを参照してください.色々
な出力が可能ですが,現実的には上の表に挙げてあるような Y, y, m, d,
H, M, S で十分では無いでしょうか.
|