ヒストグラムを書く

世の中みんな論文を書いてるんじゃないかと思うくらい、周りが大変締め切りに追われている。今日のT研は、論文締め切りが重なった関係で、10人弱の人が泊まっていた*1

それはおいといて、自分も書かなきゃいけない。すると、実験データをグラフ表示する機会も増えるが、グラフといったらgnuplotだ。わざわざ懲罰的なgnuplotなんて使わずにExcelで書けばいいじゃんとか思ったら大間違いで、gnuplotのうれしいのはコマンドライン実行できること。とったデータを整理するには面倒だが、データをとりながらグラフも更新したいときには大変ありがたい。#!/usr/bin/gnuplotでもいい。というか、Excel開き直すのはメンドクサイ。それこそ懲罰。

gnuplotの問題はヒストグラムをかけない。ベンチマーク結果みたいなグラフだ。あきらめてExcelで書いていたが、実は開発版の4.1だとこれが可能なことがわかった。バイナリ配布はされていない。

CVS版はCygwinでも問題なくコンパイルできる。X用フロントエンドがちゃんと動くか確認してない。まぁ、別にeps + GSViewで問題ないんだが。

肝心のヒストグラムの書き方だが、基本的にサンプルを参照すればいいだろう。

というか、実はあんまりよく分かってない&ドキュメント探すのがメンドクサイので、見ながら適当にいじくって作った。"u 6:xtic(1) ti col"ってところが、グラフなんだろう(columnかな)。uはusing、6はCSV中での列番号に対応している。:xtic(1)を入れると、1列目が項目名として使われるようになる。また、元データのCSVは1行目が凡例名として使われる。

以下、ちょっとかっこよくするためのポイント。

# x, y軸の目盛りを消す(これがあると激しくダサい)
set tics scale 0
# 横方向のgridだけ表示
set grid nopolar
set grid noxtics nomxtics ytics nomytics noztics nomztics \
 nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics
# 横線の間隔を調整
set ytics 0.1

特定の項目だけ表示させる方法はなさげ*2。たぶん、2次元グラフ上に配置されてるだけだから、ないんじゃないかな。set xrange [ 0.5 : 7.5 ] みたいに、範囲指定はできるけど、これとこれみたいにはつかえない。
set xticsの"rotate by -45"を消すと、項目名が斜めにならなくなる。好みとスペースの問題。各ヒストグラムを塗りつぶしではなくパターンにしたいときは、"u 12 ti col fs pattern 2"の様に、"fs pattern X"を追加するとよい。

*1:しかもみんな徹夜

*2:未確認