gnuplot は生データ ファイルから boxplot を作成できますか? このように、すでに計算された中央値、四分位数などから箱ひげ図をプロットする方法は知っていますが、生データファイルからはどうすればよいでしょうか?
生データ ファイルの各行には、1 つのテスト結果があります。
gnuplot 4.5 (現在の cvs 開発バージョン) にはこの機能があります。
現在のところ、これは、ソースhttp://gnuplot.sourceforge.net/development/index.html#DownloadCVSから自分で gnuplot をコンパイルする必要があることを意味します。
それが完了したら、デモ ファイルを次に示します: http://gnuplot.sourceforge.net/demo_4.5/boxplot.html
箱ひげ図に必要なデータを計算するには、外部プログラムを使用する必要があると思います。私はawkを使ってきましたが、どんなプログラムでもその場で使えます。平均値と分位数ではなく、生データの各行で始値/終値/最小値/最大値を計算したことに注意してください。
set xrange [-1:9]
plot "< awk '{sum=0; opening=$1; closing=$NF; min=$1; max=$1; \
for (i=1; i<=NF; i++) {sum=sum+$i; if ($i<min) min=$i; if ($i>max) max=$i}; \
print sum/NF, opening, closing, min, max}' \
junk.dat" us 0:2:4:5:3 w candle notitle
junk.dat
ファイル内の次のデータを使用します。
5.532 5.040 4.962 19.314 5.136
10.004 4.592 5.836 6.999 7.823
8.887 6.335 5.545 5.056 6.216
4.341 4.552 4.512 4.009 5.811
4.724 4.869 5.016 2.593 5.662
4.555 5.472 4.866 5.559 -0.608
6.974 3.838 2.953 6.630 2.753
5.571 8.112 3.261 7.029 4.375
3.497 5.200 6.555 5.311 8.204
得られるプロットは次のとおりです。
あなたの質問を正しく理解し、平均値を計算する方法を探している場合は、次のようにすることができます。
calc_mean(x1,x2,x3) = (x1+x2+x3)/3
calc_sum(x1,x2,x3) = x1+x2+x3
get_min(x1,x2,x3) = x1 < x2 ? (x1 < x3 ? x1 : (x2 < x3 ? x2 : x3)) : (x2 < x3 ? x2 : x3)
get_max(x1,x2,x3) = x1 > x2 ? (x1 > x3 ? x1 : (x2 > x3 ? x2 : x3)) : (x2 > x3 ? x2 : x3)
plot "Data.csv" u 0:(calc_mean($1, $2, $3)) t "Mean" w l, \
"" u 0:(calc_sum($1, $2, $3)) t "Sum" w l, \
"" u 0:(get_min($1, $2, $3)) t "Min" w l, \
"" u 0:(get_max($1, $2, $3)) t "Max" w l
上記のスクリプトは、データ行の平均値、合計値、最小値、および最大値を計算します。using ディレクティブの0
は、単にデータ行のインデックスを x 座標値として取得します。
次の場合Data.csv
:
0.62614 0.50293 0.62078
0.63789 0.58924 0.71288
0.16297 0.77453 0.82417
0.20703 0.22424 0.33596
0.57829 0.96545 0.60737
次のプロットが得られます。
これがあなたが探していたものであることを願っています。