2017-08-07 2 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 

crée les suivants: enter image description heregraphique gnuplot barres empilées arithmétique

Les colonnes sont cumulatives. Ce que je voudrais avoir est proportionnelle l'avoir, par exemple dans la ligne 2.

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

Et la valeur dans la deuxième colonne doit être comme indiqué dans le fichier de données? – Christoph

+0

Les autres colonnes étant proportionnelles ainsi – 2fishandchips

+0

je demandais à propos des _columns_. Votre exemple montre qu'au lieu de la colonne 3, vous voulez la différence entre les colonnes 3 et 2. Cela peut être fait avec 'using ($ 2 - $ 3): xtic (1)', et en conséquence avec les colonnes 4 et plus. Mais pour la colonne 2, il n'y a pas de valeur de référence. Cela devrait-il être omis ou utilisé tel qu'il est écrit dans le fichier de données? – Christoph

Répondre

0

Si vous voulez tracer la différence entre deux colonnes, vous devez calculer la différence dans l'instruction using comme

plot "tmp.data" using ($2 - $3):xtic(1) 

pour tracer la différence entre les troisième et deuxième colonnes. Pour toutes vos colonnes, et en gardant la seconde est que, d'utilisation (en utilisant les données inline $data EXIGE 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) 

Ici, vous devez décider si vous avez besoin du abs ou non. Le résultat est:

enter image description here

+0

Merci Christoph, je dois jouer avec les $ a $ b ... vars – 2fishandchips