2017-08-07 114 views
0
tmp.data 
DATE   D0 D1 D2 D3 D4 D5 
"2017-07-19" 10 8 6 4 2 1 
"2017-07-20" 16 14 10 11 10 9 
"2017-07-21" 6 5 4 4 3 1 
"2017-07-22" 7 5 4 4 3 2 
"2017-07-23" 8 6 4 2 1 1 

tmp.gnu 
set terminal png size 
set output 'output.png' 
set title "statistics" 
set key font ",10" 
D0 = "#99ffff"; D1 = "#4671d5"; D2 = "#ff0000"; D3 = "#f36e00"; D4 = "#8A2BE2#'; D5 = "#4671d5" 
set auto x 
unset xtics 
set xtics nomirror rotate by -45 scale 0 
set style data histogram 
set style histogram rowstacked 
set style fill solid border -1 
set boxwidth 0.75 
plot 'tmp.data' u 2:xtic(1) title columnheader, \ 
'' u 3:xtic(1) title columnheader, \ 
'' u 4:xtic(1) title columnheader, \ 
'' u 5:xtic(1) title columnheader, \ 
'' u 6:xtic(1) title columnheader, \ 
'' u 7:xtic(1) title columnheader 

創建以下: enter image description heregnuplot的堆積條形圖算術

的列是累計。 我想什麼有是有它的比例,例如在第2行

10 - 8 = 2, 
8 - 6 = 2, 
6 - 4 = 2, 
4 - 2 = 2, 
2 - 1 = 1 
+0

而第二列中的值應該如數據文件中給出的那樣? – Christoph

+0

其他列正在成正比 – 2fishandchips

+0

我在詢問_columns_。你的例子顯示,而不是第3列,你想要第3列和第2列之間的差異。這可以通過使用($ 2 - $ 3):xtic(1)',並相應地與第4列和更大。但對於第2欄沒有參考價值。所以應該省略,還是將其用於數據文件中? – Christoph

回答

0

如果你想繪製兩列之間的差異,那麼你必須計算像

using語句中的差異
plot "tmp.data" using ($2 - $3):xtic(1) 

繪製第三和第二列之間的差異。爲了您的所有列,並保持第二的是,使用(使用內聯數據$data需要5.0):

$data <<EOD 
DATE   D0 D1 D2 D3 D4 D5 
"2017-07-19" 10 8 6 4 2 1 
"2017-07-20" 16 14 10 11 10 9 
"2017-07-21" 6 5 4 4 3 1 
"2017-07-22" 7 5 4 4 3 2 
"2017-07-23" 8 6 4 2 1 1 
EOD 

set xtics nomirror rotate by -45 scale 0 
set style data histogram 
set style histogram rowstacked 
set style fill solid border -1 
set boxwidth 0.75 
set key auto columnheader 
plot $data u 2:xtic(1), \ 
    for [i=3:7] '' u (abs(column(i) - column(i-1))):xtic(1) 

在這裏,如果你需要abs或者不是你必須決定。結果是:

enter image description here

+0

謝謝克里斯托夫,我必須玩弄$ a $ b ...變數 – 2fishandchips