2012-06-18 13 views
62

Tôi đang cố vẽ đồ thị bằng gnuplot.I có 6 tệp văn bản. Mỗi tệp văn bản chứa hai cột. Cột đầu tiên biểu thị thời gian tính bằng giây (nó là một dấu phẩy động số thứ tự) .Thứ hai là một số thứ tự. Tôi muốn vẽ đồ thị của thời gian so với số thứ tự trong một biểu đồ duy nhất cho tất cả sáu tệp. Tôi đang sử dụng tệp này để làm điều đó.gnuplot: vẽ sơ đồ dữ liệu từ nhiều tệp đầu vào trong một biểu đồ

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" 

đâu tác phẩm của tôi là:

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

Nó được đưa ra một lỗi lạ như sau:

"plot.plt", dòng 24: biến không xác định: cốt truyện

Tôi có làm một cái gì đó cho nó có thể wrong.Is để vẽ dữ liệu đầu vào từ các tệp khác nhau trong cùng một biểu đồ.

+0

Hãy thông minh, đi đến chủ đề này http: // stackoverflow .com/questions/14946530/loop-structure-inside-gnuplot –

Trả lời

106

Bạn đang rất gần!

Thay đổi:

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" 

tới:

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ỗi này là vì gnuplot đang cố gắng để giải thích các từ "âm mưu" là tên tập tin để vẽ, nhưng bạn chưa chỉ định bất kỳ chuỗi đến một biến có tên là "lô" (đó là tốt - Điều đó sẽ là siêu khó hiểu).

57

Bạn có thể thấy rằng gnuplot dành cho các vòng lặp hữu ích trong trường hợp này, nếu bạn điều chỉnh tên tệp hoặc tiêu đề biểu đồ một cách thích hợp.

ví dụ:

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

Tôi biết điều này tôi cũ, nhưng cảm ơn bạn đã thêm giải pháp thay thế đó. Đã không nhận thức được các vòng trong gnuplot, và họ là một tính năng tuyệt vời. – Amit

+0

Giả sử quy ước tên tập tin bình thường (name.dat) Tôi nghĩ rằng điều này nên được tập tin. ". Dat". Đầu tiên. concatenates tên tập tin để "dat" nhưng không được bao gồm trong tên tập tin thực sự được sử dụng trong lệnh vẽ. – jake

+0

Làm thế nào tôi có thể vẽ * tất cả * các tệp trong một thư mục mà không viết tên rõ ràng? (http: // stackoverflow.com/q/29969393/855050) – becko

14

replot là một cách khác để có được nhiều âm mưu cùng một lúc:

plot file1.data 
replot file2.data