2016-03-21 17 views
0

私のデータはいくつかのインデックスに分かれています。私は、のいくつかまたはすべてのインデックスのを、現在のインデックスの値に選択した前のインデックスの値を加算することによって積み重ねられた曲線としてプロットしたいと思います。擬似列(-2)をインデックス番号として使用しても、1つのインデックスの列として配置されたデータ(this questionのように)の場合のように、sum関数を使用する方法を見つけることができませんでした。Gnuplot積み重ねられた様々なインデックスの塗りつぶし

重要:すべてのインデックスは厳密に同じx値のセットであり、y値のみが異なります。

はgnuplot内

p 'data.dat' index (sum(ind=1,3,4,5) ind) u 1:2 w filledcurve x1 t 'Sum(1,3,4,5)', '' index (sum(ind=1,2,5) ind) u 1:2 w filledcurve x1 t 'Sum(1,2,5)' 

ような何かを行うか、私は、スクリプト(this answer中1のかもしれない変化)に頼らなければならないのにする方法はありますか?

+0

してください、私たちは、問題とテストを再現できるように、常にサンプルデータファイルを投稿ソリューション。 – Miguel

答えて

0

これは、gnuplot(gnuplot内で呼び出される)以外のヘルプによっても実行できます。あなたは4つのインデックス(0〜3)で、以下のデータファイルを持っている想像:

1 2 
2 3 


1 5 
2 5 


1 0 
2 3 


1 4 
2 3 

は、今、私たちは最初の合計は返す必要があります1と2と0と3を合計すると言う:

1 5 
2 8 

第2の和が

1 6 
2 6 

を返す必要がありながら、私たちはset tableを使用したいブロックを選択することができます。

set table "sum1" 
plot for [i in "1 2"] "data3" index 0+i pt 7 not 

set table "sum2" 
plot for [i in "0 3"] "data3" index 0+i pt 7 not 
unset table 

今等しいxの値のために合計する空行を削除し、smooth freqするsed配管を使用します。

plot "< sed '/^\s*$/d' sum1" smooth freq t "sum1", \ 
    "< sed '/^\s*$/d' sum2" smooth freq t "sum2" 

enter image description here

+0

それは魅力のように機能します!ありがとう。 – Jep

0

gnuplot 4.4+の関数と変数を使用して実行することはできますが、ファイル内のいくつかの遠い行で操作を実行したいので効率的ではありません。アレイ。 Gnuplotはこのためのものではありません。データファイルは、プロットしたいものに合理的に近い構造を持つ必要があります。このような構造を持つファイルを作成しようとします。異なる列の同じ行に合計したい値を持っています。

+0

gnuplotは配列を扱うことには同意しません。しかし、私が最後のプロットのためにどのインデックスを残すかをプロットする前に、私は言うことができません。ここでの考え方は、合計に大きく寄与しない指標をプロットしないことです。もちろん、各インデックスを別々にプロットして、どのインデックスを保持するかを決めることができ、より良いフォーマットのファイルを生成し、「トリム」データを再プロットすることができます。もし私が何かを書くことを終わらせたら、私はここにそれを掲示するでしょう。ご意見ありがとうございます。 – Jep

+0

2つのパスを行う必要がある理由がわかりません。あなたはあなたのデータが配列y = A(x、index)であると言う。 A(:, i)をすべてのi(2列のNテーブルの合計)と書くのではなく、A(:, :)と書いてみませんか? (N + 1列の単一の表)。それでgnuplotはあなたがしたいことを処理できます。 – Joce

関連する問題