2013-07-22 37 views
31

Tôi có câu hỏi nhanh về ngày và giờ trong trục x trong GNUPLOT. Tôi sẽ cho các mã làm như nói chuyện:Ngày/giờ Gnuplot theo trục x

Đây là dữ liệu của tôi:

#Time Data in Data out 
"2013-07-22 15:59:00" 6286 3730 
"2013-07-22 15:58:00" 10695 14589 
"2013-07-22 15:57:00" 17868 26464 
"2013-07-22 15:56:00" 18880 34012 
"2013-07-22 15:55:00" 19206 41192 
"2013-07-22 15:54:00" 20365 43218 
"2013-07-22 15:53:00" 18459 39298 
"2013-07-22 15:52:00" 3420 4686 
"2013-07-22 15:51:00" 3256 4942 

Và đây là mã được tạo ra đồ thị:

gnuplot> set title "Data usage over the last 24 hours" 
gnuplot> unset multiplot 
gnuplot> set xdata time 
gnuplot> set style data lines 
gnuplot> set term png 
Terminal type set to 'png' 
Options are 'nocrop font "arial,12" fontscale 1.0 size 640,480 ' 
gnuplot> set timefmt "%Y-%m-%d %H:%M:%S" 
gnuplot> set format x "%m-%d\n%H:%M" 
gnuplot> set xlabel "Time" 
gnuplot> set ylabel "Traffic" 
gnuplot> set autoscale y 
gnuplot> set xrange ["2013-07-21 16:00":"2013-07-22 16:00"] 
gnuplot> set output "datausage.png" 
gnuplot> plot "C:\\Users\\blah\\Desktop\\plot.tmp" using 1:2 t "inbound" w lines, "C:\\Users\\blah\\Desktop\\plot.tmp" u 1:3 t "outbound" w lines 
                                           ^
     all points y value undefined! 

là vấn đề không gian trong giữa datetime trong trục x? Nếu không, bạn nghĩ điều gì có thể là vấn đề?

Trả lời

29

Gnuplot không thực sự mong đợi dữ liệu thời gian để được trong dấu ngoặc kép, vì vậy bạn phải nói với nó:

set timefmt '"%Y-%m-%d %H:%M:%S"' 

Bạn có thể đặt các dấu ngoặc kép bên trong dấu ngoặc đơn như tôi đã làm ở đây, hoặc loại bỏ các dấu ngoặc kép:

set timefmt "\"%Y-%m-%d %H:%M:%S\"" 

cùng áp dụng cho đặc điểm kỹ thuật xrange của bạn:

set xrange ['"2013-07-21 16:00"':'"2013-07-22 16:00"'] 

Nếu bạn xóa dấu ngoặc kép trong tệp dữ liệu, thì bạn có thể sử dụng định dạng ban đầu, ngoại trừ số cột sẽ bị dịch chuyển 1 bởi vì ngày chiếm hai cột không có dấu ngoặc kép.

+2

Giá trị nhấn mạnh dòng đầu tiên của câu trả lời này: "Gnuplot không thực sự mong đợi dữ liệu thời gian được báo giá, vì vậy bạn phải nói với nó:" !! Cảm ơn bạn. Gnuplot thực sự dường như phân tích các ngày được rồi nhưng có một phạm vi thực sự kỳ lạ với những năm tiêu cực đến tích cực. – gaoithe

6

Có vẻ như câu trả lời là có, vấn đề là không gian.

làm điều này dường như để sửa chữa nó:

set datafile separator ","

và thực sự chia thời gian và dữ liệu bằng dấu phẩy.

+2

Điều này cũng hoạt động. Dường như khi không gian là dấu tách, dấu ngoặc kép được coi là một phần của dữ liệu, vì vậy bạn cần phải thoát khỏi chúng. Khi dấu phẩy là dấu tách, gnuplot dường như bỏ qua dấu ngoặc kép. – andyras

Các vấn đề liên quan