[[gnuplot]]
----
gnuplot は,unix ベースのグラフ描画ツール.テキストデータからグラフ描
画が行なえる.結果は,gui 表示しても良いし,
png/jpg/eps/html(canvas)/terminal などのファイルに落すこともできる.
====== データ形式 ======
* スペース / タブ区切り.
* コメントは基本的に # を使う.
* 今回は 11 万行のデータを plot する前提です.
# 10/01 のデータ
2011/10/01_00:00:38 102.891
2011/10/01_00:01:38 102.891
2011/10/01_00:02:38 102.891
2011/10/01_00:03:38 102.891
2011/10/01_00:04:38 102.892
2011/10/01_00:05:38 102.892
2011/10/01_00:06:38 102.892
2011/10/01_00:07:38 102.892
2011/10/01_00:08:38 102.892
====== データの描画から,ファイルへの保存までの流れ ======
* まず,gnuplot のインタラクティブモードに入る.
% gnuplot
* 上記のデータの場合,日付データが入っているので,日付に関する設定を適用.
* timefmt には,他にも曜日とか 2 桁の西暦表示とか,いろいろある.
gnuplot> set xdata time
gnuplot> set timefmt "%Y/%m/%d_%H:%M:%S"
* x と y の範囲を決める.
gnuplot> set xrange ["2011/10/01_00:00:00":"2011/12/18_00:00:00"]
gnuplot> set yrange [0:350]
* デフォルトだと,x の日付の間隔が長いので,4 日毎くらいにする.第 3 引数は,秒数指定なので,頑張って計算する.
gnuplot> set xtics "2011/10/01_00:00:00" 345600
* x と y に文字列を適用する.
gnuplot> set xlabel "Date"
gnuplot> set ylabel "cumulative sent data (GB)"
* 見易さのためにグラフの中に点線を入れる.
gnuplot> set grid
* わかり易さのためにグラフのタイトルを入れる.
gnuplot> set title "2011/10/01 - 2011/12/17 cumulative sent data"
* plot してみる.
* 第一引数はデータファイル.
* 第二引数は,x, y で使うデータの指定.もし,1 行に 3 つのデータがあり,1,3 番目を使いたい場合は,1:3 と指定する.
* 第三引数は,線の引き方の指定.lines, points, linspoints など.
gnuplot> plot "data.txt" using 1:2 with lines
* 見にくいので,スムースな線にしてあげる.
* every は,1000 個毎にデータを利用する,という意味.
* 1000 個ごとのデータを with points してあげると,なんとなく見やすかったのです.
gnuplot> plot "data.txt" using 1:2 with smooth csplines with lines, \
gnuplot> "data.txt" every 1000 using 1:2 with points
* 何か設定を変えたので,再描画したい.
gnuplot> replot
* plot されたデータの設定を見たい時.
gnuplot> show all
* 中断して,次に作業を復帰させたい時.
gnuplot> save "hoge.plt"
gnuplot> load "hoge.plt"
* png, jpg, eps など,ファイル形式で保存したい時.
* 保存可能な設定一覧の確認.
gnuplot> set terminal
* png に設定する.
gnuplot> set terminal png
* 保存するファイル名の設定.
gnuplot> set output "hoge.png"
* 保存するには,新しく plot するか,表示されているものを replot です.ただ,何故か,そのままだと画像を open しているだけの時があるので,set terminal wxt とかしてあげると,Closing *.pdf とかなって,ちゃんとグラフが吐き出されます.なぜ?
* http://www.tsukune.org/skk/tmp/gnuplot/test.html
* canvas 使ったデモ
{{gnuplot:2011_10_12_data_sent_amount.png}}
====== その他 ======
===== set terminal canvas =====
* HTML を吐いてくれます.
* js で適当にきれいにしてくれるので,結構便利.
====== 参考 URL ======
* http://t16web.lanl.gov/Kawano/gnuplot/intro/index.html
* 一番良くまとまっている
* http://takeno.iee.niit.ac.jp/~foo/gp-jman/data/gp372-jp-l2h/node1.html
* 完全なリファレンス
* http://mag.eee.u-ryukyu.ac.jp/unix/gnuplot/dataline.html#bezier
* 近似線の引き方が簡単に書いてある
-