Reputation: 21
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
Creates the following:
The columns are accumulative. What I'd like to have is have it proportional, for example in row 2.
10 - 8 = 2,
8 - 6 = 2,
6 - 4 = 2,
4 - 2 = 2,
2 - 1 = 1
Upvotes: 1
Views: 1124
Reputation: 48390
If you want to plot the difference between two columns, then you must calculate the difference inside the using
statement like
plot "tmp.data" using ($2 - $3):xtic(1)
to plot the difference between third and second column. For all your columns, and keeping the second as is, use (using the inline data $data
requires 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)
Here, you must decide if you need the abs
or not. The result is:
Upvotes: 1