I think the problem is that there is a bug in R itself. If we use axis instead of Axis it works even with no check at all:
plotmonths<-function(z,...){ plot(z,xaxt="n",...) tt <- time(z) m <- unique(as.Date(as.yearmon(tt))) jan <- format(m, "%m") == "01" mlab <- substr(months(m[!jan]), 1, 1) axis(side = 1, at = m[!jan], labels = mlab, tcl = -0.3, cex.axis = 0.7) axis(side = 1, at = m[jan], labels = format(m[jan], "%y"), tcl = -0.7) axis(side = 1, at = unique(as.Date(as.yearqtr(tt))), labels = FALSE) } d <- seq(as.Date("2008-01-15"), as.Date("2008-11-04"), by = "day") z <- zoo(seq_along(d), d) plotmonths(z) On Wed, Nov 5, 2008 at 10:08 AM, <[EMAIL PROTECTED]> wrote: > > Hi Gabor, > Thanks very much. > > I tried that: > > plotmonths<-function(z,...){ > plot(z,xaxt="n",...) > tt <- time(z) > m <- unique(as.Date(as.yearmon(tt))) > jan <- format(m, "%m") == "01" > mlab <- substr(months(m[!jan]), 1, 1) > Axis(side = 1, at = m[!jan], labels = mlab, tcl = -0.3, cex.axis = 0.7) > #if(abs(as.numeric(head(index(z),1)-tail(index(z),1)))>367) > if(any(jan)) > Axis(side = 1, at = m[jan], labels = format(m[jan], "%y"), tcl = > -0.7) > Axis(side = 1, at = unique(as.Date(as.yearqtr(tt))), labels = FALSE) > } > > But that fails with the same error message: > Error in axis(side, at = z, labels = labels, ...) : > 'at' and 'labels' lengths differ, 0 != 1 > > I think the problem is that, if one has a time series that goes from the > 15th of Jan 2008 to 4 Nov 2008, in the absence of the test above, the script > attempts to place "08" at the very left when that tick does not really get > placed by plot.zoo. By testing that the time series is at least a year long, > one ensures that there is space for the "08" tick. > > Tolga > > > > > "Gabor Grothendieck" <[EMAIL PROTECTED]> > > 05/11/2008 14:47 > > To > [EMAIL PROTECTED] > cc > r-help@r-project.org > Subject > Re: [R] fine grain tick marks for zoo plots > > > > > Try > > if (any(jan)) ... > > > On Wed, Nov 5, 2008 at 8:55 AM, <[EMAIL PROTECTED]> wrote: >> >> By way of follow-up, this will not work if the time series does not run >> over >> a year, as the replacement of January by the year fails on the second call >> to Axis. >> >> The following tests for this: >> >> plotmonths<-function(z,...){ >> plot(z,xaxt="n",...) >> tt <- time(z) >> m <- unique(as.Date(as.yearmon(tt))) >> jan <- format(m, "%m") == "01" >> mlab <- substr(months(m[!jan]), 1, 1) >> Axis(side = 1, at = m[!jan], labels = mlab, tcl = -0.3, cex.axis = 0.7) >> if(abs(as.numeric(head(index(z),1)-tail(index(z),1)))>367) >> Axis(side = 1, at = m[jan], labels = format(m[jan], "%y"), tcl = >> -0.7) >> Axis(side = 1, at = unique(as.Date(as.yearqtr(tt))), labels = FALSE) >> } >> >> >> >> >> Tolga I Uzuner/JPMCHASE >> >> 04/11/2008 14:16 >> >> To >> "Gabor Grothendieck" <[EMAIL PROTECTED]> >> cc >> r-help@r-project.org, [EMAIL PROTECTED] >> Subject >> Re: [R] fine grain tick marks for zoo plotsLink >> >> >> >> Many thanks all. The following does the trick for me, taken out of the >> vignette: >> >> plotmonths<-function(z,...){ >> plot(z,xaxt="n",...) >> tt <- time(z) >> m <- unique(as.Date(as.yearmon(tt))) >> jan <- format(m, "%m") == "01" >> mlab <- substr(months(m[!jan]), 1, 1) >> Axis(side = 1, at = m[!jan], labels = mlab, tcl = -0.3, cex.axis = 0.7) >> Axis(side = 1, at = m[jan], labels = format(m[jan], "%y"), tcl = -0.7) >> Axis(side = 1, at = unique(as.Date(as.yearqtr(tt))), labels = FALSE) >> } >> >> Regards, >> Tolga >> >> >> >> >> "Gabor Grothendieck" <[EMAIL PROTECTED]> >> >> 04/11/2008 14:06 >> >> To >> [EMAIL PROTECTED] >> cc >> r-help@r-project.org >> Subject >> Re: [R] fine grain tick marks for zoo plots >> >> >> >> >> And there are additional examples in >> vignette("zoo-faq") >> and >> example(xyplot.zoo) >> >> On Tue, Nov 4, 2008 at 8:26 AM, Gabor Grothendieck >> <[EMAIL PROTECTED]> wrote: >>> example(plot.zoo) has an example. >>> >>> On Tue, Nov 4, 2008 at 8:10 AM, <[EMAIL PROTECTED]> wrote: >>>> Dear R Users, >>>> >>>> I am trying to get plot.zoo to place monthy tickmarks/labels for a time >>>> series which spans daily data going back a bit over a year. Right now, I >>>> am getting only one tick mark on the x-axis for the beginning of 2008. >>>> How >>>> can I force plot.zoo to place more regular x-axis tick marks on a >>>> monthly >>>> basis ? >>>> >>>> Thanks in advance, >>>> Tolga >>>> >>>> >>>> Generally, this communication is for informational purposes only >>>> and it is not intended as an offer or solicitation for the purchase >>>> or sale of any financial instrument or as an official confirmation >>>> of any transaction. In the event you are receiving the offering >>>> materials attached below related to your interest in hedge funds or >>>> private equity, this communication may be intended as an offer or >>>> solicitation for the purchase or sale of such fund(s). All market >>>> prices, data and other information are not warranted as to >>>> completeness or accuracy and are subject to change without notice. >>>> Any comments or statements made herein do not necessarily reflect >>>> those of JPMorgan Chase & Co., its subsidiaries and affiliates. >>>> >>>> This transmission may contain information that is privileged, >>>> confidential, legally privileged, and/or exempt from disclosure >>>> under applicable law. If you are not the intended recipient, you >>>> are hereby notified that any disclosure, copying, distribution, or >>>> use of the information contained herein (including any reliance >>>> thereon) is STRICTLY PROHIBITED. Although this transmission and any >>>> attachments are believed to be free of any virus or other defect >>>> that might affect any computer system into which it is received and >>>> opened, it is the responsibility of the recipient to ensure that it >>>> is virus free and no responsibility is accepted by JPMorgan Chase & >>>> Co., its subsidiaries and affiliates, as applicable, for any loss >>>> or damage arising in any way from its use. If you received this >>>> transmission in error, please immediately contact the sender and >>>> destroy the material in its entirety, whether in electronic or hard >>>> copy format. Thank you. >>>> Please refer to http://www.jpmorgan.com/pages/disclosures for >>>> disclosures relating to UK legal entities. >>>> [[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. >>>> >>> >> >> >> ________________________________ >> >> Generally, this communication is for informational purposes only and it is >> not intended as an offer or solicitation for the purchase or sale of any >> financial instrument or as an official confirmation of any transaction. In >> the event you are receiving the offering materials attached below related >> to >> your interest in hedge funds or private equity, this communication may be >> intended as an offer or solicitation for the purchase or sale of such >> fund(s). All market prices, data and other information are not warranted >> as >> to completeness or accuracy and are subject to change without notice. Any >> comments or statements made herein do not necessarily reflect those of >> JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission >> may >> contain information that is privileged, confidential, legally privileged, >> and/or exempt from disclosure under applicable law. If you are not the >> intended recipient, you are hereby notified that any disclosure, copying, >> distribution, or use of the information contained herein (including any >> reliance thereon) is STRICTLY PROHIBITED. Although this transmission and >> any >> attachments are believed to be free of any virus or other defect that >> might >> affect any computer system into which it is received and opened, it is the >> responsibility of the recipient to ensure that it is virus free and no >> responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and >> affiliates, as applicable, for any loss or damage arising in any way from >> its use. If you received this transmission in error, please immediately >> contact the sender and destroy the material in its entirety, whether in >> electronic or hard copy format. Thank you. Please refer to >> http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK >> legal entities. > > ________________________________ > > Generally, this communication is for informational purposes only and it is > not intended as an offer or solicitation for the purchase or sale of any > financial instrument or as an official confirmation of any transaction. In > the event you are receiving the offering materials attached below related to > your interest in hedge funds or private equity, this communication may be > intended as an offer or solicitation for the purchase or sale of such > fund(s). All market prices, data and other information are not warranted as > to completeness or accuracy and are subject to change without notice. Any > comments or statements made herein do not necessarily reflect those of > JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may > contain information that is privileged, confidential, legally privileged, > and/or exempt from disclosure under applicable law. If you are not the > intended recipient, you are hereby notified that any disclosure, copying, > distribution, or use of the information contained herein (including any > reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any > attachments are believed to be free of any virus or other defect that might > affect any computer system into which it is received and opened, it is the > responsibility of the recipient to ensure that it is virus free and no > responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and > affiliates, as applicable, for any loss or damage arising in any way from > its use. If you received this transmission in error, please immediately > contact the sender and destroy the material in its entirety, whether in > electronic or hard copy format. Thank you. Please refer to > http://www.jpmorgan.com/pages/disclosures for disclosures relating to UK > legal entities. ______________________________________________ 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.