[R] fine grain tick marks for zoo plots

Gabor Grothendieck ggrothendieck at gmail.com
Wed Nov 5 16:40:16 CET 2008


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,  <tolga.i.uzuner at jpmorgan.com> 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" <ggrothendieck at gmail.com>
>
> 05/11/2008 14:47
>
> To
> tolga.i.uzuner at jpmorgan.com
> cc
> r-help at 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,  <tolga.i.uzuner at jpmorgan.com> 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" <ggrothendieck at gmail.com>
>> cc
>> r-help at r-project.org, tolga.i.uzuner at jpmorgan.com
>> 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" <ggrothendieck at gmail.com>
>>
>> 04/11/2008 14:06
>>
>> To
>> tolga.i.uzuner at jpmorgan.com
>> cc
>> r-help at 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
>> <ggrothendieck at gmail.com> wrote:
>>> example(plot.zoo) has an example.
>>>
>>> On Tue, Nov 4, 2008 at 8:10 AM,  <tolga.i.uzuner at jpmorgan.com> 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 at 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.



More information about the R-help mailing list