Faire le tracé exactement dans cette orientation pourrait être très lourd, si possible.
Ma suggestion est de tracer tout avec l'orientation habituelle (ie ayant l'axe « sédiments » comme x
-axis, ou plutôt comme x2
-axis), tourner toutes les étiquettes un peu et enfin tourner la sortie complète par 90
degré (fichier pdf avec par exemple pdftk
etc).
Avec cela, vous pouvez utiliser n'importe quel style de tracé comme d'habitude. Dans le script ci-dessous, je viens de vous montrer comment tracer les courbes remplies de violet et de jaune (en utilisant des pseudo-données) pour deux ensembles de données différents. Ajouter les autres pics devrait être simple (tracer les barres avec par exemple boxes
ou vector
style de traçage).
Afin d'avoir ytics
distinctes pour les différentes parcelles, j'associé un certain y
-value avec une certaine parcelle, 1=Water
, ..., 4=Gyttja
).
Mettre tout donne toghether le script suivant:
reset
set terminal pdfcairo linewidth 2
outfile='bean'
set output outfile.'.pdf'
set encoding utf8
set x2range [0.5:9000]
set logscale x2
set x2tics (1, 5, 10, 50, '' 100, 500, '' 1000, 5000) out
set x2label 'mg/kg (sediments), µg/L (water)'
unset xtics
set yrange[0.5:4.5]
set ytics ('Water' 1, 'Minerogenic' 2, 'Peat' 3, 'Gyttja' 4) center rotate by -90 out
set label at graph 0.95, graph 0.05 right rotate by -90 'Nickel' font ',20' front
# cover possible data overlapping with the label
set object rectangle from graph 0.9, graph 0 to graph 1,graph 0.2 fillcolor rgb 'white' fillstyle solid noborder front
unset key
set macros
fs1="fillcolor rgb '#fc9e00' linewidth 2 fillstyle solid border lt -1"
fs2="fillcolor rgb '#9119f7' linewidth 2 fillstyle solid border lt -1"
# use pseudo data
set samples 500
plot '+' using 1:(4-0.3*exp(-(($1-10)/5.0)**4)) axes x2y1 with filledcurves y1=4 @fs1,\
'' using 1:(4+0.2*exp(-(($1-70)/50.0)**4)) axes x2y1 with filledcurves y1=4 @fs2,\
'' using 1:(1-0.4*exp(-(($1-5)/2.0)**2)) axes x2y1 with filledcurves y1=1 @fs1,\
'' using 1:(1+0.1*exp(-(($1-30)/20.0)**2)) axes x2y1 with filledcurves y1=1 @fs2
set output
system(sprintf('pdftk %s.pdf cat 1W output %s-rot.pdf', outfile, outfile))
system(sprintf('pdftocairo -r 150 -png %s-rot.pdf', outfile))
Cela donne (classique et mis en rotation de sortie côte à côte) avec 4.6.3:
Quelques trucs est nécessaire pour les pseudo-données. Pour un vrai fichier de données, la ligne de tracé est un peu différente. Les différentes parcelles ont une séparation de 1
dans y
-direction, vous devez donc l'échelle de vos données en conséquence (fait ici manuellement avec un facteur d'échelle sc
):
sc = 5.1
plot 'datafile.txt' using 1:(4 + $2/sc) axes x2y1 with filledcurves y1=4 @fs1
Vous pouvez bien sûr faire aussi mise à l'échelle automatique, par extraction certaines valeurs minimales/maximales à l'aide de la commande stats
.
Merci beaucoup pour votre point de départ. Et l'orientation n'est pas un problème, j'ai juste besoin d'afficher plusieurs distributions les unes à côté des autres pour pouvoir les comparer. – dstorey