2012-06-18 15 views
62

Estoy tratando de trazar un gráfico usando gnuplot.Tengo 6 archivos de texto.Cada archivo de texto contiene dos columnas.La primera columna representa el tiempo en segundos (es un flotante número de punto). Segundo es un número de secuencia. Quiero trazar el gráfico del tiempo frente al número de secuencia en un solo gráfico para los seis archivos. Estoy usando este archivo para hacer eso.gnuplot: trazado de datos de múltiples archivos de entrada en un solo gráfico

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" 

Cuando mis archivos son:

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

Se está dando un extraño error de la siguiente manera:

"plot.plt", línea 24: variable no definida: parcela

Estoy haciendo algo wrong.Is posible para trazar los datos de entrada de diferentes archivos en el mismo gráfico.

+0

ser inteligente, ir a este tema http: // stackoverflow .com/questions/14946530/loop-structure-inside-gnuplot –

Respuesta

106

¡Estás tan cerca!

Cambio:

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" 

a:

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" 

El error se debe a gnuplot está tratando de interpretar la palabra "trama" como nombre de archivo para trazar, pero no se ha asignado ningún tipo de condiciones a una variable llamada "trama" (que es buena - Eso sería muy confuso).

57

Puede encontrar que los bucles for de gnuplot son útiles en este caso, si ajusta los nombres de sus archivos o títulos de gráficos de manera apropiada.

p. Ej.

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

y

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

Sé esto es viejo, pero gracias por agregar esa solución alternativa. No estaba al tanto de los bucles en gnuplot, y son una característica increíble. – Amit

+0

Suponiendo la convención de nombre de archivo normal (nombre.dat), creo que esto debería ser un archivo. ". Dat". El primero . concatena el nombre de archivo a "dat" pero no está incluido en el nombre de archivo realmente utilizado en el comando de trazado. – jake

+0

¿Cómo puedo trazar * todos * los archivos en un directorio sin escribir explícitamente sus nombres? (http: // stackoverflow.com/q/29969393/855050) – becko

14

Replot es otra manera de obtener varias parcelas a la vez:

plot file1.data 
replot file2.data 
Cuestiones relacionadas