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 とかなって,ちゃんとグラフが吐き出されます.なぜ?
-
- canvas 使ったデモ
-
その他
set terminal canvas
- HTML を吐いてくれます.
- js で適当にきれいにしてくれるので,結構便利.
参考 URL
-
- 一番良くまとまっている
-
- 完全なリファレンス
-
- 近似線の引き方が簡単に書いてある
-