On Thu, May 26, 2011 at 4:34 AM, Paul Murrell <p.murr...@auckland.ac.nz> wrote: > Hi > > On 15/05/2011 2:01 a.m., Larry White wrote: >> >> Hi, >> >> I'm trying to use Grid plots and would like to have an X axis that >> represents dates. I have several years of data so I would like to be able >> to >> have labeled tick marks only intermittently (not one per date). I can >> transform the initial data from a date time string into POSIXlt or >> POSIXct, >> or Date objects. >> >> The issue is that when I try to layout the plot using: >> >> dev.off() >> pushViewport( >> plotViewport( >> c(5, 5, 4, 2), >> xscale=c( >> min(foo), >> max(foo)), >> yscale=c(0,30) >> ) >> ) >> >> I get this error, regardless of whether "foo" is formated as POSIXlt, >> POSIXct or Date for the xscale. >> >> Error in valid.viewport(x, y, width, height, just, gp, clip, xscale, >> yscale, >> : >> Invalid 'xscale' in viewport >> >> How does one specify the scale? In the end, I would prefer something like >> "2007 2008", etc. to appear on the axis and, of course, I'd actually >> want >> to plot the data with an x axis of dates. I'm not yet far enough to see if >> that's going to be an issue. > > The viewport scale has to be numeric. Dates are not supported at all by > grid.xaxis() or grid.yaxis(). If your dates are just days, you can > as.numeric() them to get a useful range and then pretty() and > as.Date(origin="1970-01-01") to get useful labels for tick marks, but the > general solution is more complex (see axis.Date()). Depending on what your > plots need to look like, another approach would be to customize a 'lattice' > plot because it provides support for date-based axes.
The (newish) pretty.POSIXt method makes this relatively painless: foo <- as.POSIXct(Sys.Date() + c(0, 365, -365)) grid.newpage() pushViewport( plotViewport( c(5, 5, 4, 2), xscale = as.numeric(range(foo)), yscale = c(0,30) ) ) grid.rect() p <- pretty(foo) grid.xaxis(at = p, label = attr(p, "labels")) p <- pretty(foo, n = 2) grid.xaxis(at = p, label = attr(p, "labels"), main = FALSE) -Deepayan > Paul > >> >> Apologies if this is a stupid question, but it's very hard to search for >> Grid examples on the web, because "grid" is a very common term in R >> plotting >> generally. >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > -- > Dr Paul Murrell > Department of Statistics > The University of Auckland > Private Bag 92019 > Auckland > New Zealand > 64 9 3737599 x85392 > p...@stat.auckland.ac.nz > http://www.stat.auckland.ac.nz/~paul/ > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.