web-dev-qa-db-fra.com

gnuplot: traçage des données de plusieurs fichiers d'entrée dans un même graphe

J'essaie de tracer un graphique à l'aide de gnuplot.J'ai 6 fichiers texte.Chaque fichier texte contient deux colonnes. La première colonne représente le temps en secondes (il s'agit d'un nombre à virgule flottante). graphique du temps vs numéro de séquence dans un seul graphique pour les six fichiers.J'utilise ce fichier pour le faire.

set terminal png
set output 'akamai.png'

set xdata time
set timefmt "%S"
set xlabel "time"

set autoscale

set ylabel "highest seq number"
set format y "%s"

set title "seq number over time"
set key reverse Left outside
set grid

set style data linespoints

plot "print_1012720" using 1:2 title "Flow 1", \
plot "print_1058167" using 1:2 title "Flow 2", \
plot "print_193548"  using 1:2 title "Flow 3", \ 
plot "print_401125"  using 1:2 title "Flow 4", \
plot "print_401275"  using 1:2 title "Flow 5", \
plot "print_401276"  using 1:2 title "Flow 6"

Où sont mes fichiers:

  • print_1012720
  • print_1058167
  • print_193548
  • print_401125
  • print_401275
  • print_401276

Cela donne une erreur étrange comme ci-dessous:

"plot.plt", ligne 24: variable non définie: plot

Est-ce que je fais quelque chose de mal? Est-il possible de tracer les données d'entrée de différents fichiers dans le même graphique.

76
liv2hak

Tu es si proche!

Changement:

plot "print_1012720" using 1:2 title "Flow 1", \
plot "print_1058167" using 1:2 title "Flow 2", \
plot "print_193548"  using 1:2 title "Flow 3", \ 
plot "print_401125"  using 1:2 title "Flow 4", \
plot "print_401275"  using 1:2 title "Flow 5", \
plot "print_401276"  using 1:2 title "Flow 6"

à:

plot "print_1012720" using 1:2 title "Flow 1", \
     "print_1058167" using 1:2 title "Flow 2", \
     "print_193548"  using 1:2 title "Flow 3", \ 
     "print_401125"  using 1:2 title "Flow 4", \
     "print_401275"  using 1:2 title "Flow 5", \
     "print_401276"  using 1:2 title "Flow 6"

L'erreur est due au fait que gnuplot essaie d'interpréter le mot "plot" comme le nom du fichier à tracer, mais vous n'avez assigné aucune chaîne à une variable nommée "plot" (ce qui est bien - ce serait très déroutant).

123
mgilson

Vous trouverez peut-être que les boucles for gnuplot sont utiles dans ce cas, si vous ajustez les noms de fichiers ou les titres de graphes de manière appropriée.

par exemple.

filenames = "first second third fourth fifth"
plot for [file in filenames] file."dat" using 1:2 with lines

et

filename(n) = sprintf("file_%d", n)
plot for [i=1:10] filename(i) using 1:2 with lines
65
Richard

replot est un autre moyen d’obtenir plusieurs parcelles à la fois:

plot file1.data
replot file2.data