2017-12-06 22 views
-1

こんにちは私は別のプログラムから生成されたデータのCDFグラフを生成するgnuplotスクリプトを作成しようとしています。 データがソートされていないGNUPLOTでCDFをプロットする

データは次のようになります。

col1 col2 col3 col4 col5 
ABCD11 19.8 1.13 129 2 
AABC32 14.3 2.32 109 2 
AACd12 19.1 0.21 103 2 

私はポイント2列にCDFをプロットしたいがcol2内のデータがソートされない可能性があることです。

私が試したスクリプトがあり、このようなhere

として、私は、オンラインツールを使用するスクリプトをコンパイルするには、次の

set output 'out.svg' 
set terminal svg size 600,300 enhanced fname 'arial' fsize 10 mousing butt solid 
set xlabel "X" 
set ylabel "CDF" 
set style line 2 lc rgb 'black' lt 1 lw 1 
set xtics format "" nomirror rotate by -10 font ", 7" 
set ytics nomirror 

set grid ytics 
set key box height .4 width -1 box right 
set nokey 
set title "CDF of X" 

a=0 
#gnuplot 4.4+ functions are now defined as: 
#func(variable1,variable2...)=(statement1,statement2,...,return value) 
cumulative_sum(x)=(a=a+x,a) 
plot "data.txt" using 1:(cumulative_sum($2)) with linespoints lt -1 
+0

を、そのような "陰謀" などのパイプは ShinQian

答えて

0

2番目の列の値の累積合計を(ランニング)を計算したい場合ソートされた値を使用すると、awkに基づいてアプローチをわずかに拡張できます。具体的には、コマンドはここ

tail -n+2 'test.txt' | sort -k2,2n | awk '{s+=$2; print NR, s}' 

なり、ヘッダオフtailストリップ(最初の行をスキップし)、sortソート数値第二列によれば、最終的にはawkの関数としての累積和を算出レコード数/項目数

+0

質問に記載されているようなオンラインコンパイラがこれらの操作をサポートするかどうかは不明です。 基本的には、問題は純粋なgnuplotベースのアプローチを見つけることでした。 – ShinQian

1

あなたはhelp smooth cumulative参照、データからCDFを取得するためにcumulative平滑スタイルを使用することができます。また

plot "test.dat" u 2:(1) smooth cumulative w lp 

enter image description here

+0

ありがとう、私は同じを試みたが、私は実行累積合計が必要です。 – ShinQian

+1

私はあなたが何を意味するかわかりません...あなたのサンプルデータ19.8,14.3,19.1に対してどのような出力が期待されますか? 'smooth cumulative'はCDFを与えます:' y'の任意の値に対して 'y'より小さいデータ点の数を返します。 – user8153