2016-05-06 23 views
1

与えられたx値に対して任意の数のy値を持つcsvを生成するスクリプトを作成しています。 csvの最初の行にはデータセットの名前があります。 x値はUNIXのタイムスタンプです。私はgnuplotを使って、このデータを積み重ねた折れ線グラフとしてグラフ化し、値がその行の合計の端数として表示されるようにしたいと思います。どうすればいい?GNUPlot - 積み重ねられた行の任意の数の列

私は以下の解決策を見て、それらを統合しようとしましたが、私が間違っていることを理解できません。

これは、列の数が不十分であるか、列の数が不一致であると言います。

与えられた時間インデックスには、最大N列のデータがあります。私が見ている合計は、与えられた時間インデックスのものです。

-

私のデータの例:

KEY,CSS,JavaScript,Perl,Python,Shell 
1428852630,0,0,0,0,406 
1428852721,0,0,0,0,406 
1428852793,0,0,0,0,406 
1428853776,0,0,0,0,781 
1429889154,0,0,0,0,1200 
1429891056,0,0,0,0,1648 
1429891182,0,0,0,0,1648 
1429891642,0,0,0,0,1648 
1430176065,0,0,0,0,2056 

しかし、私は、実行時に列の数を設定し、1をしたい、多数の列がある可能性があります。


http://gnuplot.sourceforge.net/demo/histograms.html - これは、列の任意の数を有するように変更されているとの問題を持っているようです。

plot 'immigration.dat' using (100.*$2/$24):xtic(1) t column(2), \ 
    for [i=3:23] '' using (100.*column(i)/column(24)) title column(i) 

https://newspaint.wordpress.com/2013/09/11/creating-a-filled-stack-graph-in-gnuplot/

+0

矛盾があります:「私はyrangeのを知らない」「の値が合計の分数として示されている」とは?コードが正常に見えて、あなたが持っている問題を説明してください。各行に24列ありますか? ? – Joce

+0

@Joce私はちょうど列についての情報を追加し、未知の範囲を削除しました。 – HSchmale

+0

空の列にゼロを追加するとどうなりますか?ファイルに使用される「欠落しているデータ」シンボルを定義することもできます(例: 'set datafile missing '?" '正確な答えを得るには、小さなデータサンプルで最小限の例を含める必要があります。 – Joce

答えて

1

This answerわずかに変更して、列をカウントする方法を示しています

file="file.dat" 
get_number_of_cols = "awk -F, 'NR == 1 { print NF; exit }' ".file 
nc=system(get_number_of_cols) 

は、その後、あなたはのは、再帰でそれをやらせるので、合計はncに2をcolums必要

sum(c,C)=((c!=C)?column(c)+sum(c+1,C):column(c)) 

これでプロットすることができます:

set key outside 
set datafile separator "," 
plot for [i=nc:2:-1] file using 0:(100*sum(2,i)/sum(2,nc)):xtic(1) title columnhead(i) with filledcurve y=0 

enter image description here

関連する問題