2017-07-28 172 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個用戶,可以說,這個腳本將爲前9個用戶繪製9個CPU的值, ,以及最後一個用戶的兩個值。 ......對我來說沒有任何意義,任何一個?

這裏的屏幕截圖;)

enter image description here

回答

1

它似乎僅環一行是gnuplot的陰謀一次,和你的循環的第二部分被視爲一個單獨的情節。 GNUPLOT第一小區所有的 「CPU」 線循環:

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 (j),i) - (USR(i)= word(USERS,i)) - 但是我的第一個問題仍然是「爲什麼我的腳本不工作,理論上是賴特是嗎? – kapad

+0

@ prompt32這只是一個例子。見編輯的答案。沒有你的數據,我不能保證它的工作。 –

+0

謝謝,Michael O!它的工作原理 – kapad

0

https://stackoverflow.com/users/6401403/michael-o基於 Michael 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