Gnuplot date/time in x axis

DateTimeGnuplot

Date Problem Overview


I have a quick question regarding dates and times in x-axis in GNUPLOT. I'll let the code do the talking:

This is my data:

#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

And this is the code that is generating the graph:

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!

Is the problem the space in between date and time in the x-axis? If not, what do you think could be the problem?

Date Solutions


Solution 1 - Date

Gnuplot doesn't actually expect time data to be in quotes, so you have to tell it:

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

You can put the double quotes inside single quotes as I did here, or escape the quotes:

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

the same applies to your xrange specification:

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

If you delete the quotes in the data file, then you can use the formatting you originally had, except the column numbers will be shifted over by 1 since the date takes up two columns without the quotes.

Solution 2 - Date

It seems like the answer is yes, the problem was the space.

doing this seems to fix it:

set datafile separator ","

and actually separating the times and data with commas.

Solution 3 - Date

As far as I understood, the order of instructions is important, I could afford it using:

  • The timefmt is for data and has to be the same for xrange

  • format x is only for displaying

            set xdata time
            set timefmt "%Y%m%dT%H%M%S"
            set format x "%Y-%m-%d\n%H:%M:%S"
            # or with bash variables: set xrange ["$l_start_dt":"$l_end_dt"]
            set xrange ["20190620T000000":"20190628T000000"]
    

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJose SalvatierraView Question on Stackoverflow
Solution 1 - DateandyrasView Answer on Stackoverflow
Solution 2 - DateJose SalvatierraView Answer on Stackoverflow
Solution 3 - DatePipoView Answer on Stackoverflow