[R] Plotting Time against Date for time series data?

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon May 17 18:39:30 CEST 2004


On Mon, 17 May 2004, Sander Oom wrote:

> The plot is nearly there! Using the axis.POSIXct command I have got the 
> x-axis under control. However, the units for the y-axis (Time) are in 
> seconds by default (i.e. range is from 0 to 1440). I'm trying to plot hours 
> along the y-axis, without changing the units for the plot itself, but 
> without any luck.

I got hours for your example, I believe, but it does depend on the data.

Try

Time <- difftime(Date, DateTime, units="hours")

and treat them as numbers, not as POSIXct (they are not dates).


> 
> The #'s were a quick solution to stop WinEdt reformatting my code 
> automatically, now I discovered I can switch to a different wrap mode.
> 
> This is the code just now:
> 
>  >
>  > psDateTime <- function(DateTime, FileName){
> +     strFileName <- paste("Analysis\\Graphics\\time_date_", FileName, sep 
> = "")
> +     startMonth <- as.POSIXct(as.Date("01/09/2003", format="%d/%m/%Y"))
> +     endMonth <- as.POSIXct(as.Date("01/06/2004", format="%d/%m/%Y"))
> +     startTime <- as.POSIXct(as.Date("00:00:00", format="%H:%m:%s"))
> +     endTime <- as.POSIXct(as.Date("23:59:59", format="%H:%m:%s"))

Just startTime <- 0, endTime <- 24 should do.

> +     Date <- trunc(DateTime, "day")
> +     Time <- DateTime - Date
> +     postscript(strFileName)
> +     plot(x=Date, y=Time,
> +         xlab= "Date (month/year)", ylab= "Time (hours)", xaxt="n", #yaxt="n",
> +         xlim=c(as.POSIXct(startMonth), as.POSIXct(endMonth)),
> +         ylim=c(as.POSIXct(startTime), as.POSIXct(endTime))
> +         )
> +     axis.POSIXct(1, at=seq(startMonth, endMonth, by="month"), format="%m/%y")
> +     axis.POSIXct(2, at=seq(startTime, endTime, by="hours"), format="%H")
> +     pstamp(pwd=FALSE, time=TRUE)
> +     dev.off()
> + }
>  > psDateTime(datKruger1$DaTim, "datKruger1.eps")
> Error in plot.window(xlim, ylim, log, asp, ...) :
>          need finite ylim values
>  >
> 
> and when removing the ylim line from the above code, an error associated 
> with the 'axis.POSICct(2....)' line:
> 
>  > psDateTime(datKruger1$DaTim, "datKruger1.eps")
> Error in if (to <= from) stop("`to' must be later than `from'") :
>          missing value where TRUE/FALSE needed
>  >
> 
> Any help much appreciated,
> 
> Sander.
> 
> At 15:58 2004/05/17, you wrote:
> >On Mon, 17 May 2004, Slist wrote:
> >
> > > I have a data set containing GPS fixes of animal locations. To check that
> > > the GPS's are working properly, I would like to plot the time of the fixes
> > > (y-axis) against the date of the fixes (x-axis). If all works well, the
> > > plot should show four regular fixes per day. The x-axis should be labelled
> > > with month/year (i.e. 11/04) and the y-axis by hour from 00 to 24. I would
> > > like to control the x-axis limits.
> > >
> > > I have looked at several date and time related help pages, but get 
> > horribly
> > > lost in all the terminology. The main challenge is to isolate date and 
> > time
> > > from the date/time object for plotting (marked ???). Therefore, I would
> > > like the following example code to work:
> > >
> > >  >
> > >  >
> > > dates <- c("02/27/92", "02/27/92", "01/14/92", "01/14/92", "03/28/92", 
> > "03/28/92") #
> > > times <- c("23:03:20", "10:29:56", "01:03:30", "13:03:30", "18:21:03", 
> > "06:56:26") #
> > > x <- paste(dates, times) #
> > > DateTime <- strptime(x, "%m/%d/%y %H:%M:%S") #
> >
> >Why do you end lines with #?  It is rather confusing.
> >
> >Date <- trunc(DateTime, "day")
> >Time <- DateTime - Date
> >plot(Date, Time)
> >
> >appears to do what you want (except the x axis labelling, which you can
> >alter by a call to axis.POSIXct and x-axis limits, which need to be set
> >via xlim as a POSIXct object.).
> >
> >--
> >Brian D. Ripley,                  ripley at stats.ox.ac.uk
> >Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> >University of Oxford,             Tel:  +44 1865 272861 (self)
> >1 South Parks Road,                     +44 1865 272866 (PA)
> >Oxford OX1 3TG, UK                Fax:  +44 1865 272595
> 
> 

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list