[[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 * 近似線の引き方が簡単に書いてある -