gnuplot: tracer des données à partir de plusieurs fichiers d'entrée dans un seul graphique

J'essaie de tracer un graphique en utilisant gnuplot.J'ai 6 fichiers texte.Chaque fichier texte contient deux colonnes.La première colonne représente le temps en secondes(c'est un nombre à virgule flottante).La deuxième est un numéro de séquence.Je veux tracer le graphique du temps par rapport au 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

Il donne une erreur étrange comme ci-dessous:

"terrain.plt", ligne 24: variable indéfinie: plot

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

68
demandé sur kenorb 2012-06-19 03:44:44

3 réponses

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 parce que gnuplot essaie d'interpréter le mot "plot" comme le nom de fichier à tracer, mais vous n'avez assigné aucune chaîne à une variable nommée "plot" (ce qui est bien-ce serait super déroutant).

115
répondu mgilson 2012-12-10 13:55:54

Vous pouvez trouver que les boucles for De gnuplot sont utiles dans ce cas, si vous ajustez vos noms de fichiers ou vos titres de graphique 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
64
répondu Richard 2014-01-27 23:06:03

Replot est une autre façon d'obtenir plusieurs intrigues à la fois:

plot file1.data
replot file2.data
15