2013-07-22 14 views
31

Mam szybkie pytanie dotyczące dat i godzin w osi x w GNUPLOT. Powiem kod nie mówić:Data/godzina Gnuplot na osi X

To jest moje dane:

#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 

I to jest kod, który jest generowanie wykresu:

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! 

jest problem przestrzeni w między date i time na osi X? Jeśli nie, to jaki może być problem?

Odpowiedz

29

Gnuplot faktycznie nie oczekiwać dane czas, aby być w cudzysłowie, więc trzeba powiedzieć to:

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

można umieścić cudzysłów wewnątrz apostrofów jak ja tutaj, albo uciec cytaty:

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

to samo odnosi się do specyfikacji xrange:

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

Jeśli usuniesz cudzysłowy z pliku danych, możesz użyć oryginalnego formatowania, z tą różnicą, że numery kolumn zostaną przesunięte o 1, ponieważ data zajmuje dwie kolumny bez cudzysłowów.

+2

Warto podkreślić pierwszy wiersz odpowiedzi: "Gnuplot w rzeczywistości nie oczekuje danych czasowych w cudzysłowie, więc musisz powiedzieć:" !! Dziękuję Ci. Wydawało się, że Gnuplot poprawnie analizuje daty, ale ma naprawdę dziwny zasięg z latami ujemnymi do pozytywnych. – gaoithe

6

Wygląda na to, że odpowiedź brzmi: tak, problemem była przestrzeń.

robi to wydaje się to naprawić:

set datafile separator ","

i faktycznie rozdzielając razy i danych przecinkami.

+2

To również działa. Wydaje się, że gdy spacja jest separatorem, cytaty są traktowane jako część danych, więc musisz ich unikać. Kiedy przecinek jest separatorem, gnuplot najwyraźniej ignoruje cytaty. – andyras

Powiązane problemy