[gnuplot] gnuplot : 단일 그래프에 여러 입력 파일의 데이터 플로팅

gnuplot을 사용하여 그래프를 그리려고합니다. 6 개의 텍스트 파일이 있습니다. 각 텍스트 파일에는 두 개의 열이 있습니다. 첫 번째 열은 시간을 초 단위로 나타냅니다 (부동 소수점 숫자). 두 번째는 시퀀스 번호입니다. 6 개 파일 모두에 대해 단일 그래프에 시간 대 시퀀스 번호의 그래프를 플로팅하고 싶습니다. 이 파일을 사용하고 있습니다.

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 행 : 정의되지 않은 변수 : 플롯

내가 뭘 잘못하고 있니? 동일한 그래프에서 다른 파일의 입력 데이터를 플로팅 할 수 있습니까?



답변

너무 가까워요!

변화

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”이라는 단어를 플롯 할 파일 이름으로 해석하려고하지만 “plot”이라는 이름의 변수에 문자열을 할당하지 않았기 때문에 오류가 발생합니다.


답변

이 경우 파일 이름이나 그래프 제목을 적절하게 조정하면 gnuplot의 for 루프가 유용하다는 것을 알 수 있습니다.

예 :

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


답변

replot

이것은 한 번에 여러 플롯을 얻는 또 다른 방법입니다.

plot file1.data
replot file2.data


답변