2012-06-18 5 views
62

Я пытаюсь построить график с использованием gnuplot.I имеет 6 текстовых файлов. Каждый текстовый файл содержит два столбца. Первый столбец представляет время в секундах (это плавающий номер точки). Вторым является порядковый номер. Я хочу построить график времени по порядковому номеру в одном графике для всех шести файлов. Я использую этот файл для этого.gnuplot: отображение данных из нескольких входных файлов в одном графике

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" 

Где мои файлы:

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

Это дает странную ошибку, как показано ниже:

"plot.plt", строка 24: неопределенная переменная: участок

Могу ли я сделать что-то wrong.Is это возможно для построения входных данных из разных файлов на одном графике.

+0

Будь умным, перейти к этой теме Http: // StackOverflow .com/вопросы/14946530/loop-structure-inside-gnuplot –

ответ

106

Вы так близко!

Изменение:

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" 

Ошибка в том, что Gnuplot пытается интерпретировать слово «сюжет» в качестве имени файла для сюжета, но вы не назначили никаких строк к переменной с именем «plot» (что хорошо - это было бы супер запутанным).

57

Возможно, вы найдете, что петли gnuplot для этого полезны в этом случае, если вы правильно настроите свои имена файлов или графики.

например.

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

и

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

Я знаю это i старый, но спасибо за добавление этого альтернативного решения. Не знал о петлях в gnuplot, и это потрясающая функция. – Amit

+0

Предполагая, что обычное соглашение об имени файла (name.dat) Я думаю, что это должен быть файл. ". Dat". Первый . объединяет имя файла с именем «dat», но не входит в имя файла, которое фактически используется в команде построения графика. – jake

+0

Как я могу отображать * все * файлы в каталоге без явного написания их имен? (HTTP: // StackOverflow.com/q/29969393/855050) – becko

14

Replot это еще один способ получить несколько участков сразу:

plot file1.data 
replot file2.data 
Смежные вопросы