pp.timeplot <- function (x, div = "year", type = "l", xlab = "", xnam = NULL, ...) { if (is.data.frame(x)) x <- as.matrix(x) if (is.matrix(x)) { matplot(x, axes = FALSE, type = type, xlab = xlab, ...) if (!length(xnam)) { xnam <- row.names(x) } else if (length(xnam) != nrow(x)) { stop("'xnam' is the wrong length") } } else { plot(x, axes = FALSE, type = type, xlab = xlab, ...) if (!length(xnam)) { xnam <- names(x) } else if (length(xnam) != length(x)) { stop("'xnam' is the wrong length") } } axis(2) if (!is.character(div) || length(div) != 1) { stop("'div' must be a single character string -- given has mode ", mode(div), " and length ", length(div)) } div.menu <- c("years", "decades", "months") div.num <- pmatch(div, div.menu, nomatch = 0) if(div.num == 0) { stop("unknown or ambiguous value given for 'div' -- possible ", "values are: ", paste(div.menu, collapse=", ")) } div <- div.menu[div.num] switch(div, decades = { tim <- substring(xnam, 1, 3) tlab <- paste(unique(tim), "0's", sep = "") }, years = { tim <- substring(xnam, 1, 4) tlab <- unique(tim) }, months = { tim <- substring(xnam, 1, 7) tlab <- substring(unique(tim), 6, 7) }) tcount <- cumsum(table(tim)) tbrk <- tcount[-length(tcount)] + 0.5 axis(1, at = tbrk, labels = rep("", length(tbrk)), tck = 1, lty = 2, col = 2) axis(1, at = tbrk, labels = rep("", length(tbrk)), lty = 2, col = 2) maxd <- max(diff(tcount)) tcount[length(tcount)] <- tcount[length(tcount) - 1] + maxd axis(1, at = tcount - maxd/2, labels = tlab, tck = 0) box() }