I've never had any issues with the way that plot.POSIXct chooses the labels of the date axis before, but in this particular case it's output is a little confusing. plot(seq(as.POSIXct("1997-10-01"),length.out=108,by="month"),rnorm(108)) This command produces a chart with every x tick mark labeled as "Jan 01". I can replicate this chart by adding the format string "%b %d". plot(seq(as.POSIXct("1997-10-01"),length.out=108,by="month"),rnorm(108), format="%b-%d") My contention is that plot.POSIXct should choose "%Y" in this case, which would show unique labels rather than repeated labels. plot(seq(as.POSIXct("1997-10-01"),length.out=108,by="month"),rnorm(108), format="%Y") Now, just looking at axis.POSIXct it seems that the terminal condition of this if/else sequence sets format to "%b %d": } else if (d < 7 * 60 * 60 * 24) { sc <- 60 * 60 * 24 if (missing(format)) format <- "%a" } else { sc <- 60 * 60 * 24 if (missing(format)) format <- "%b %d" #****** here } when the second set of if conditions fires up, format has already bet set, so the missing(format) test fails here and does not set the format to %Y: else { class(z) <- c("POSIXt", "POSIXct") zz <- as.POSIXlt(z) zz$mday <- 1 zz$isdst <- zz$mon <- zz$hour <- zz$min <- zz$sec <- 0 zz$year <- pretty(zz$year) z <- as.POSIXct(zz) if (missing(format)) format <- "%Y" #****** here } I'm not sure if this is the intended behavior or not. Does anyone else have any thoughts on this issue? Thanks, Whit This e-mail message is intended only for the named recipient(s) above. It may contain confidential information. If you are not the intended recipient you are hereby notified that any dissemination, distribution or copying of this e-mail and any attachment(s) is strictly prohibited. If you have received this e-mail in error, please immediately notify the sender by replying to this e-mail and delete the message and any attachment(s) from your system. Thank you. [[alternative HTML version deleted]]
Sorry forgot to include:> R.Version()$platform [1] "x86_64-unknown-linux-gnu" $arch [1] "x86_64" $os [1] "linux-gnu" $system [1] "x86_64, linux-gnu" $status [1] "" $major [1] "2" $minor [1] "4.0" $year [1] "2006" $month [1] "10" $day [1] "03" $`svn rev` [1] "39566" $language [1] "R" $version.string [1] "R version 2.4.0 (2006-10-03)" This e-mail message is intended only for the named recipient(s) above. It may contain confidential information. If you are not the intended recipient you are hereby notified that any dissemination, distribution or copying of this e-mail and any attachment(s) is strictly prohibited. If you have received this e-mail in error, please immediately notify the sender by replying to this e-mail and delete the message and any attachment(s) from your system. Thank you.
On 10/12/2006 9:08 AM, Armstrong, Whit wrote:> I've never had any issues with the way that plot.POSIXct chooses the > labels of the date axis before, but in this particular case it's output > is a little confusing.It was wrong, but this was fixed in R-patched last week. I've added an item to NEWS about it. Duncan Murdoch> > plot(seq(as.POSIXct("1997-10-01"),length.out=108,by="month"),rnorm(108)) > > This command produces a chart with every x tick mark labeled as "Jan > 01". > > I can replicate this chart by adding the format string "%b %d". > > plot(seq(as.POSIXct("1997-10-01"),length.out=108,by="month"),rnorm(108), > format="%b-%d") > > My contention is that plot.POSIXct should choose "%Y" in this case, > which would show unique labels rather than repeated labels. > > plot(seq(as.POSIXct("1997-10-01"),length.out=108,by="month"),rnorm(108), > format="%Y") > > > > Now, just looking at axis.POSIXct it seems that the terminal condition > of this if/else sequence sets format to "%b %d": > > } > else if (d < 7 * 60 * 60 * 24) { > sc <- 60 * 60 * 24 > if (missing(format)) > format <- "%a" > } > else { > sc <- 60 * 60 * 24 > if (missing(format)) > format <- "%b %d" #****** here > } > > > when the second set of if conditions fires up, format has already bet > set, so the missing(format) test fails here and does not set the format > to %Y: > > else { > class(z) <- c("POSIXt", "POSIXct") > zz <- as.POSIXlt(z) > zz$mday <- 1 > zz$isdst <- zz$mon <- zz$hour <- zz$min <- zz$sec <- 0 > zz$year <- pretty(zz$year) > z <- as.POSIXct(zz) > if (missing(format)) > format <- "%Y" #****** here > } > > I'm not sure if this is the intended behavior or not. Does anyone else > have any thoughts on this issue? > > Thanks, > Whit > > > > > > This e-mail message is intended only for the named recipient(s) above. It may contain confidential information. If you are not the intended recipient you are hereby notified that any dissemination, distribution or copying of this e-mail and any attachment(s) is strictly prohibited. If you have received this e-mail in error, please immediately notify the sender by replying to this e-mail and delete the message and any attachment(s) from your system. Thank you. > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel