2013-07-22 11 views
31

Ho una breve domanda riguardante le date e le ore nell'asse x in GNUPLOT. Ti lascio il codice a parlare:data/ora di Gnuplot nell'asse x

Questo è il mio dati:

#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 

E questo è il codice che genera il grafico:

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! 

è il problema dello spazio in tra date e time nell'asse x? In caso contrario, quale pensi possa essere il problema?

risposta

29

Gnuplot in realtà non si aspettano i dati in tempo per essere tra virgolette, in modo da avere a raccontarla:

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

si può mettere i doppi apici all'interno virgolette singole come ho fatto qui, o sfuggire alle citazioni:

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

lo stesso vale per la vostra specifica xrange:

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

Se si eliminano le virgolette nel file di dati, è possibile utilizzare la formattazione originariamente utilizzata, ad eccezione dei numeri delle colonne che verranno spostati di 1 poiché la data occupa due colonne senza virgolette.

+2

Vale la pena sottolineare la prima riga di questa risposta: "Gnuplot non si aspetta che i dati del tempo siano tra virgolette, quindi devi dirglielo:" !! Grazie. Gnuplot sembrava effettivamente analizzare le date, ma ha avuto una gamma davvero strana con gli anni negativi a quelli positivi. – gaoithe

6

Sembra che la risposta sia sì, il problema era lo spazio.

fare questo sembra per risolvere il problema:

set datafile separator ","

ed effettivamente separare i tempi ei dati con le virgole.

+2

Funziona anche. Sembra che quando lo spazio è il separatore, le virgolette siano trattate come parte dei dati, quindi è necessario sfuggirle. Quando la virgola è il separatore, gnuplot apparentemente ignora le virgolette. – andyras