web-dev-qa-db-fra.com

gnuplot: traçage d'un fichier avec 4 colonnes toutes sur l'axe des y

J'ai un fichier qui contient 4 nombres (min, max, moyenne, dérivation standard) et je voudrais le tracer avec gnuplot.

Échantillon:

24 31 29.0909 2.57451
12 31 27.2727 5.24129
14 31 26.1818 5.04197
22 31 27.7273 3.13603
22 31 28.1818 2.88627

Si j'ai 4 fichiers avec une colonne, je peux faire:

gnuplot "file1.txt" with lines, "file2.txt" with lines, "file3.txt" with lines, "file4.txt" with lines

Et il tracera 4 courbes. Je ne me soucie pas de l'axe des x, ce devrait être juste un incrément constant.

Comment pourrais-je s'il vous plaît tracer? Je n'arrive pas à trouver un moyen d'avoir 4 courbes avec 1 fichier avec 4 colonnes, ayant juste une valeur x en constante augmentation.

Merci.

29
user1777907

Vous pouvez tracer différentes colonnes du même fichier comme ceci:

plot 'file' using 0:1 with lines, '' using 0:2 with lines ...

(... signifie continuation). Quelques notes sur cette notation: using spécifie la colonne à tracer, c'est-à-dire les colonnes 0 et 1 dans la première instruction using, la 0e colonne est une pseudo-colonne qui se traduit par le numéro de ligne actuel dans le fichier de données. Notez que si un seul argument est utilisé avec using (par exemple using n) cela correspond à dire using 0:n (merci de l'avoir signalé mgilson).

Si votre version de Gnuplot est assez récente, vous pourrez tracer les 4 colonnes avec une boucle for:

set key outside
plot for [col=1:4] 'file' using 0:col with lines

Résultat:

for-loop plot

Gnuplot peut utiliser des en-têtes de colonne pour le titre s'ils se trouvent dans le fichier de données, par exemple:

min max mean std
24 31 29.0909 2.57451
12 31 27.2727 5.24129
14 31 26.1818 5.04197
22 31 27.7273 3.13603
22 31 28.1818 2.88627

et

set key outside
plot for [col=1:4] 'file' using 0:col with lines title columnheader

Résulte en:

for-loop plot with column headers

76
Thor

Juste pour ajouter que vous pouvez spécifier l'incrément dans la boucle for comme troisième argument. C'est utile si vous voulez tracer toutes les n colonnes.

plot for [col=START:END:INC] 'file' using col with lines

Dans ce cas, cela ne change rien mais de toute façon:

plot for [col=1:4:1] 'file' using col with lines
11
j_s