2017-07-28 22 views
0

gnuplotスクリプトに問題があります。gnuplot - ループでプロットする

私のデータファイルには、次の形式を有する、(値は例としてある)

# timestamp  |- user1 -|  |-user2-|   |-user3-| 
# ms   procs cpu% mem% procs cpu% mem% procs cpu% mem% 
1234   10 12 13  20 22 23  30 32 33 
1235   19 15 16  29 25 26  39 35 36 

私のgnuplotのコードは

reset 

USERS="user1 user2 user3" 

VAL(g,c)= (3*(g-1)) + c 

plot for [i=1:words(USERS)] "__GCRONDIR__/.data/usrstat.log" \ 
    u 1:VAL(i,3) t word(USERS,i)." cpu:".i __STYLE0__, \ 
"" u 1:VAL(i,4) t word(USERS,i)." mem:".i __STYLE0__ 

私の問題は、ループは、最後のユーザのために起こることです、 だから10人のユーザーがいれば、このスクリプトは9CPUの値をプロットし、最初の9ユーザーは 、最後のユーザーはとなります。 ...私にとっては意味がありません、誰ですか?ここ

スクリーンショット;)

enter image description here

答えて

1

これは、一度にループでgnuplotのプロットは一行のみと思われる、とあなたのループの第2の部分は、別々のプロットとして扱われます。最初のプロットにループ内のすべての "CPU" の線はgnuplot:

plot for [i=1:words(USERS)] "__GCRONDIR__/.data/usrstat.log" \ 
    u 1:VAL(i,3) t word(USERS,i)." cpu:".i __STYLE0__, \ 

をして、最後に "MEM" 行:

"" u 1:VAL(i,4) t word(USERS,i)." mem:".i __STYLE0__ 

あなたが代わりにネストされたループを使用することができます。

kind(k)=(k==1? "cpu: " : "mem: ") 
plot for [i=1:5] for [j=1:2] (i-1)*2+j t sprintf("%s %d", kind(j), i) 

enter image description here

あなたの場合は、次のようなものになります:

reset 
USERS="user1 user2 user3" 
VAL(g,c)= (3*(g-1)) + c 
kind(k)=(k==3? "cpu:" : "mem:") 
plot for [i=1:words(USERS)] \ 
for [j=3:4] \ 
"__GCRONDIR__/.data/usrstat.log" \ 
    u 1:VAL(i,j) t word(USERS,i).kind(j).i __STYLE0__ 
+0

この形式は機能しません。スクリプト内では、画像のようにまっすぐになりますが、これは間違っています。あなたのコードを使用して、以下を使用します: [j = 2:4](i-1)* 3 + jt sprintf( "%s%d"、USR - (USR(i)= word(USERS、i)) - しかし、私の第一の疑問は、「なぜ私のスクリプトは動かないのですか? – kapad

+0

@ prompt32これは単なる例でした。編集済みの回答を参照してください。あなたのデータを持っていない、私はそれが動作することを保証することはできません。 –

+0

ありがとう、Michael O!それは – kapad

0

https://stackoverflow.com/users/6401403/michael-oベース マイケル・Oの答え、これは私の全文です。

#!/usr/bin/gnuplot 

reset 
set term __TERM__ transparent truecolor enhanced font "__PLOTFONT__" size __PLOTGEOMETRY__ 
set key noreverse outside top right Right tc rgb"#ffffff" 
set grid ytics xtics back lw __PLOTGRID__ lc rgb"#ffffff" 
set autoscale 

set title "Users %" tc rgb"#ffffff" 
set xtics ("0" 0,"." 60,"." 120,"3" 180,"." 240,"." 300,"6" 360,"." 420,"." 480,"9" 540,"." 600,"." 660,"0" 720,"." 780,"." 840,"3" 900,"." 960,"." 1020,"6" 1080,"." 1140,"." 1200,"9" 1260,"." 1320,"." 1380,"0" 1440,) tc rgb"#ffffff" 
set ylabel "%" tc rgb"#ffffff" 
set ytics tc rgb"#ffffff" 

DATA="__GCRONDIR__/.data/usrstat.log" 
USERS=system("__GCRONDIR__/bin/getEnv 'USERS'") 

VAL(g,c)=(3*(g-1)) + c 
USR(i)=word(USERS,i) 

STATLABELS="pad1 procs cpu mem" 

kind(k)=word(STATLABELS,k) 


plot for [i=1:words(USERS)] for [j=3:4] \ 
"__GCRONDIR__/.data/usrstat.log" u 1:VAL(i,j) t USR(i)." ".kind(j).i __STYLE0__ 
+0

https://github.com/prompt32/gcron – kapad

関連する問題