Learn R Programming

oce (version 0.8-6)

oce.plot.ts: Plot a time-series, obeying the timezone

Description

Plot a time-series, obeying the timezone and possibly drawing the range in the top-left margin

Usage

oce.plot.ts(x, y, type="l", xlim, ylim, xlab="", ylab="", 
            drawTimeRange=TRUE, adorn=NULL, fill=FALSE,
            xaxs="i", yaxs="i",
            cex=par("cex"), cex.axis=par("cex.axis"), cex.main=par("cex.main"),
            mgp=getOption("oceMgp"),
            mar=c(mgp[1]+if(nchar(xlab)>0) 1.5 else 1, mgp[1]+1.5, mgp[2]+1, mgp[2]+3/4),
            mai.palette=c(0, 1/8, 0, 3/8),
            main="",
            despike=FALSE,
            axes=TRUE,
            marginsAsImage=FALSE,
            grid=FALSE, grid.col="darkgray", grid.lty="dotted", grid.lwd=1,
            debug=getOption("oceDebug"),
            ...)

Arguments

x
the times of observations.
y
the observations.
type
plot type, "l" for lines, "p" for points.
xlim
optional limit for x axis.
ylim
optional limit for y axis.
drawTimeRange
a boolean, set to TRUE to indicate the range of times in the top-left margin.
adorn
optional expression to be performed immediately after drawing the panel. (See plot.adp for an example.)
fill
boolean, set TRUE to fill the curve to zero (which it does incorrectly if there are missing values in y).
xlab
names for x axis.
ylab
names for y axis.
xaxs
character indicating whether image should extend to edge of x axis (with value "i") or not; see par("xaxs").
yaxs
as xaxs but for y axis.
cex
size of labels on axes; see par("cex").
cex.axis
see par("cex.axis").
cex.main
see par("cex.main").
mgp
3-element numerical vector to use for par(mgp), and also for par(mar), computed from this. The default is tighter than the R default, in order to use more space for the data and less for the axes.
mar
value to be used with par("mar").
mai.palette
margins, in inches, for the palette
main
title of plot.
despike
boolean flag that can turn on despiking with despike.
grid
if TRUE, a grid will be drawn for each panel. (This argument is needed, because calling grid after doing a sequence of plots will not result in useful results for the individual panel
grid.col
color of grid
grid.lty
line type of grid
grid.lwd
line width of grid
debug
a flag that turns on debugging. Set to 1 to get a moderate amount of debugging information, or to 2 to get more.
axes
boolean, set to TRUE to get axes plotted
marginsAsImage
FALSE
...
graphical parameters passed down to plot.

encoding

UTF-8

Details

Depending on the version of R, the standard plot and plot.ts routines will not obey the time zone of the data. This routine gets around that problem. It can also plot the time range in the top-left margin, if desired; this string includes the timezone, to remove any possible confusion.

The time axis is drawn with oce.axis.POSIXct.

Examples

Run this code
library(oce)
t.start <- as.POSIXct("2008-01-01", tz="UTC")
t <- seq(t.start, length.out=48, by="30 min")
y <- sin(as.numeric(t - t.start) * 2 * pi / (12 * 3600))
oce.plot.ts(t, y, type='l', xaxs='i')

weatherplot <- function(id=6358, time=as.POSIXlt(Sys.Date()))
{
    ## The default stationID is Halifax, NS, Canada
    site <- "http://www.climate.weatheroffice.gc.ca/climateData/bulkdata_e.html"
    time <- as.POSIXlt(time)
    f <- paste(site,
               "?timeframe=1&StationID=", id,
               "&&Year=", time$year+1900,
               "&Month=", time$mon+1,
               "&Day=", time$mday,
               "&format=csv", sep="")
    ## Read lines first, to see where header ends.  Cannot parse header, owing
    ## to multi-byte strings there.
    ll <- readLines(f)
    skip <- which(grepl("Date", ll, perl=TRUE))
    d <- read.csv(f, skip=skip, header=FALSE)
    t <- as.POSIXct(d[,1])
    p <- d[,19]
    oce.plot.ts(t, p, type='l', ylab="Pressure [dbar]", cex=2/3, main=paste("Station", id))
}
weatherplot()

Run the code above in your browser using DataLab