dorapon2000’s diary

忘備録的な。セキュリティとかネットワークすきです。

複数ファイルのデータをまとめて1枚のヒストグラムにする (gnuplot)

同じ条件で試行した実験データが100個別々のファイルであるとして、全てを1つのヒストグラム上でまとめます。第一段階として、100ファイルを1つのファイルに連結します。第二段階として、そのファイルをgnuplotで読み込んでヒストグラムにします。

データをまとめる

シェルでちゃっとやりました。catに複数ファイルを指定することでファイルを連結できます。

$ find . -type f | grep sojourn.tr | xargs cat > all_sojourn.tr

ヒストグラム

set xlabel "sojourn time (ms)"
set ylabel "numebers"
binwidth = 10
bin(val) = binwidth * floor(val/binwidth)
plot "all_sojourn.tr" using (bin($2)):(1.0) smooth frequency with boxes lw 2 title "sojourn histogram"

f:id:dorapon2000:20190422123145p:plain

3行目〜5行目は、gnuplot公式のマニュアルに書かれていたヒストグラムのグラフ出力方法を、少し変えたものです。 特に調べてないので式の雰囲気しかわかりませんが、binwidthにヒストグラムのグラフの刻み幅を指定できます。 using 〇〇:△△ smooth frequencyヒストグラムにします。 〇〇が同じものについて、△△の合計値が出力されるようで、ヒストグラムにしたいので△△には1を指定します。 $2は2列目の値のヒストグラムを取るという意味。

with boxes以下は参考サイトを参考にして、適当につけたオプションです。 with boxesがグラフをデフォルトの折れ線グラフから棒グラフに変えます。 lw 2がlinewidthを指定していて、デフォルトより少し太めになります。 title "sojourn histogram"はタイトルです。

参考

http://www.gnuplot.info/docs_5.0/gnuplot.pdf#page=90

Gnuplotで相対頻度分布を描く - Qiita

gnuplotでヒストグラムを描く - メモログ(雑記)