2016-05-01 17 views
2

smooth freqでプロットすると、どのように私は、Y-MAXに対応x位置を得るのですか?データの集合が与えられる:gnuplotのヒストグラム(平滑FREQ)最大位置

#data.dat 
7.20051 
7.65602 
7.87180 
8.64177 
8.92575 
8.65913 
8.98814 
9.45199 
8.40334 
8.75102 
8.65440 
8.21088 
8.59719 
8.23259 
8.34794 
8.41658 
7.67074 
8.44228 
8.54347 
9.04961 
9.18177 
.... 

私は次のことを試してみた:

gnuplot 
binwidth=0.1 
bin(x,width)=width*floor(x/width) + binwidth/2.0 
set terminal unknown 
plot 'data.dat' u (bin($1,binwidth)):(1.0) smooth freq w l 
show variables all 

GPVAL_Y2_MAX = 6051.0は私がしたいことを最大のy値(ピーク)ですが、どのように私は、対応するのですかx値? smooth freqはできませんstatsを使用して、私はビンにデータを事前処理する必要はありません。 gnuplotを使ってx値を取得する方法はありますか?

答えて

1

あなたは、実際にそのデータの前処理にgnuplotを使用することができます。さんは

7.20051 
7.65602 
7.87180 
8.64177 
8.92575 
8.65913 
8.98814 
9.45199 
8.40334 
8.75102 
8.65440 
8.21088 
8.59719 
8.23259 
8.34794 
8.41658 
7.67074 
8.44228 
8.54347 
9.04961 
9.18177 

はその後、スクリプトの最初の部分を実行するのと同じように、あなたのデータが見えることとしましょう

binwidth=0.1 
bin(x,width)=width*floor(x/width) + binwidth/2.0 
plot 'data.dat' u (bin($1,binwidth)):(1.0) smooth freq w l 

我々は8.45と8.65で、3のピークを参照してください

enter image description here

生成。

今、私たちは、統計情報が提供されたデータにこれを見つけるためにコマンドを使用することはできませんが、我々はgnuplotは、この前処理を行うことができますいくつかの前処理されたデータ上でそれを使用することができます。

set table "tempfile" 
plot 'data.dat' u (bin($1,binwidth)):(1.0) smooth freq 
unset table 

set tableコマンドを実行すると、gnuplotはプロットをプロットするのではなく、プロット解析をファイルにプッシュします。

# Curve 0 of 1, 14 points 
# Curve title: "$k u (bin($1,binwidth)):(1.0)" 
# x y type 
7.25 1 i 
7.65 2 i 
7.85 1 i 
8.25 2 i 
8.35 1 i 
8.45 3 i 
8.55 2 i 
8.65 3 i 
8.75 1 i 
8.95 2 i 
9.05 1 i 
9.15 1 i 
9.45 1 i 
8.65 1 u 

お知らせIuのその最後の列の:結果は、ファイル一時ファイルは今ビニングデータが含まれていることです。 Iは、U範囲データのうち示す範囲データとに示します。スムーズなオプションは、ほとんどの場合、範囲外のような最終点を1つ追加します。私たちはstatコマンドにそれを無視するように伝える必要があります。

stat "tempfile" u 1:(strcol(3) eq 'i'?$2:1/0) 

ここでiは 3番目の列は、(strcol機能による文字列として読み取る)に等しい場合にのみ、最初の列、第2列を使用して、一時ファイルを分析するstatコマンドを使用します。

次に、STATS_max_yとSTATS_pos_max_y変数の値は、それぞれ3及び8.65です。これは2番目のピークを示します。

関連する問題