Vindoggy !
2012-Nov-13 22:30 UTC
[R] Can't format x axis on a stacked plot of a zoo object
As an example data set: set.seed(1) z.Date <- as.Date(paste(2003, 02, c(1, 3, 7, 9, 14), sep = "-")) z <- zoo(cbind(left = rnorm(5), right = rnorm(5, sd = 0.2)), z.Date) tt<-time(z) fmt<-"%b-%d" labs<-format(tt,fmt) plot(z[,1], xlab = "Time", ylab = "") If I plot the data and don't like the format of the x axis I can do this: plot(z[,1], xlab = "Time", ylab = "",xaxt="n") axis(side=1, at=tt[1:5],labels=labs[1:5],cex.axis=0.7) But if I want to do a stacked plot: plot(z, xlab = "Time", ylab = "",xaxt="n") axis(side=1, at=tt[1:5],labels=labs[1:5],cex.axis=0.7) The axis command has no effect. Can someone explain what is going on and how to format a stacked plot like this? Thanks [[alternative HTML version deleted]]
Gabor Grothendieck
2012-Nov-13 22:53 UTC
[R] Can't format x axis on a stacked plot of a zoo object
On Tue, Nov 13, 2012 at 5:30 PM, Vindoggy ! <vindoggy at hotmail.com> wrote:> > As an example data set: > > set.seed(1) > z.Date <- as.Date(paste(2003, 02, c(1, 3, 7, 9, 14), sep = "-")) > z <- zoo(cbind(left = rnorm(5), right = rnorm(5, sd = 0.2)), z.Date) > > tt<-time(z) > > > > fmt<-"%b-%d" > > labs<-format(tt,fmt) > plot(z[,1], xlab = "Time", ylab = "") > > If I plot the data and don't like the format of the x axis I can do this: > > plot(z[,1], xlab = "Time", ylab = "",xaxt="n") > > axis(side=1, at=tt[1:5],labels=labs[1:5],cex.axis=0.7) > > But if I want to do a stacked plot: > > plot(z, xlab = "Time", ylab = "",xaxt="n") > axis(side=1, at=tt[1:5],labels=labs[1:5],cex.axis=0.7) >This is a FAQ. See FAQ #8 vignette("zoo-faq") and also see the examples at the bottom of ?plot.zoo -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
Jose Iparraguirre
2012-Nov-14 14:48 UTC
[R] Can't format x axis on a stacked plot of a zoo object
Hi,
Have a look at this example in plot.zoo:
## Custom x axis labelling using a custom panel.
# 1. test data
z <- zoo(c(21, 34, 33, 41, 39, 38, 37, 28, 33, 40),
as.Date(c("1992-01-10", "1992-01-17",
"1992-01-24", "1992-01-31",
"1992-02-07", "1992-02-14", "1992-02-21",
"1992-02-28", "1992-03-06",
"1992-03-13")))
zz <- merge(a = z, b = z+10)
# 2. axis tick for every point. Also every 3rd point labelled.
my.panel <- function(x, y, ..., pf = parent.frame()) {
fmt <- "%b-%d" # format for axis labels
lines(x, y, ...)
# if bottom panel
if (with(pf, length(panel.number) == 0 ||
panel.number %% nr == 0 || panel.number == nser)) {
# create ticks at x values and then label every third tick
axis(side = 1, at = x, labels = FALSE)
ix <- seq(1, length(x), 3)
labs <- format(x, fmt)
axis(side = 1, at = x[ix], labels = labs[ix], tcl = -0.7, cex.axis = 0.7)
}
}
# 3. plot
plot(zz, panel = my.panel, xaxt = "n")
Regards,
Jose
________________________________________
From: r-help-bounces at r-project.org [r-help-bounces at r-project.org] On
Behalf Of Vindoggy ! [vindoggy at hotmail.com]
Sent: 13 November 2012 22:30
To: r-help at r-project.org
Subject: [R] Can't format x axis on a stacked plot of a zoo object
As an example data set:
set.seed(1)
z.Date <- as.Date(paste(2003, 02, c(1, 3, 7, 9, 14), sep = "-"))
z <- zoo(cbind(left = rnorm(5), right = rnorm(5, sd = 0.2)), z.Date)
tt<-time(z)
fmt<-"%b-%d"
labs<-format(tt,fmt)
plot(z[,1], xlab = "Time", ylab = "")
If I plot the data and don't like the format of the x axis I can do this:
plot(z[,1], xlab = "Time", ylab = "",xaxt="n")
axis(side=1, at=tt[1:5],labels=labs[1:5],cex.axis=0.7)
But if I want to do a stacked plot:
plot(z, xlab = "Time", ylab = "",xaxt="n")
axis(side=1, at=tt[1:5],labels=labs[1:5],cex.axis=0.7)
The axis command has no effect. Can someone explain what is going on and how to
format a stacked plot like this?
Thanks
[[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.
Wrap Up & Run 10k next March to raise vital funds for Age UK
Six exciting new 10k races are taking place throughout the country and we want
you to join in the fun! Whether you're a runner or not, these are
events are for everyone ~ from walking groups to serious athletes. The Age UK
Events Team will provide you with a training plan to suit your
level and lots of tips to make this your first successful challenge of 2012.
Beat the January blues and raise some vital funds to help us
prevent avoidable deaths amongst older people this winter.
Sign up now! www.ageuk.org.uk/10k
Coming to; London Crystal Palace, Southport, Tatton Park, Cheshire Harewood
House, Leeds,Coventry, Exeter
Age UK Improving later life
www.ageuk.org.uk
-------------------------------
Age UK is a registered charity and company limited by guarantee, (registered
charity number 1128267, registered company number 6825798).
Registered office: Tavis House, 1-6 Tavistock Square, London WC1H 9NA.
For the purposes of promoting Age UK Insurance, Age UK is an Appointed
Representative of Age UK Enterprises Limited, Age UK is an Introducer
Appointed Representative of JLT Benefit Solutions Limited and Simplyhealth
Access for the purposes of introducing potential annuity and health
cash plans customers respectively. Age UK Enterprises Limited, JLT Benefit
Solutions Limited and Simplyhealth Access are all authorised and
regulated by the Financial Services Authority.
------------------------------
This email and any files transmitted with it are confidential and intended
solely for the use of the individual or entity to whom they are
addressed. If you receive a message in error, please advise the sender and
delete immediately.
Except where this email is sent in the usual course of our business, any
opinions expressed in this email are those of the author and do not
necessarily reflect the opinions of Age UK or its subsidiaries and associated
companies. Age UK monitors all e-mail transmissions passing
through its network and may block or modify mails which are deemed to be
unsuitable.
Age Concern England (charity number 261794) and Help the Aged (charity number
272786) and their trading and other associated companies merged
on 1st April 2009. Together they have formed the Age UK Group, dedicated to
improving the lives of people in later life. The three national
Age Concerns in Scotland, Northern Ireland and Wales have also merged with Help
the Aged in these nations to form three registered charities:
Age Scotland, Age NI, Age Cymru.