Dear all,
I am struggling to modify the axis labels/ticks in a panel provided to
xyplot.
To begin with, I do not know the equivalent of the xaxt="n" directive for
panels that would set the stage for no default x axis being drawn.
My goal is to draw ticks and custom formatted labels at certain hours of the
week.
When I execute the code below, I get an error message in the plot window
that suggests a problem with some args parameter.

A second problem concerns the shaded rectangles I try to draw. Clearly, the
range returned by par('usr') does not correspond to the true y ranges.

Any help would be greatly appreciated,

Thanks,

Markus

PS I am using R version 2.10.0 on MACOS and the lattice package version
0.18-3 (latest)
------------------------------------------------------------------------------------
library(lattice);

#multivariate time series, one row for each hour of the week:
Xwide = cbind.data.frame(time=as.POSIXct("2010-09-06 00:00:00 EDT") +
(0:167)*3600, Comp.1= sin(2*pi*7*(0:167)/168), Comp.2 =
cos(2*pi*7*(0:167)/168));
#to pass this to xyplot, first need to reshape:
Xlong <- reshape(Xwide, varying = c(2:3), idvar = "time", direction="long",
timevar = "PC");
#get descriptive shingle labels
Xlong[,"PC"] <- factor(Xlong[,"PC"], labels = paste("PC",1:2));

xyplot(Comp ~ time | PC ,data = Xlong, pane1l = WeekhourPanel, scales =
list(x=list(at = Hours24-4*3600,
labels=as.character(format(Hours24-4*3600,"%H")))));

WeekhourPanel <- function(x,y,...){
  r <- range(x);
  #print(r)
  Hours8 <- seq(r[1], r[2], by=8*3600);
  Hours24 <- seq(r[1]+12*3600, r[2], by=24*3600)
  #axis.POSIXct(1, at= Hours8, format="%H");
  panel.xyplot(x,y, type="l", ...);
  panel.grid(0,3);
  panel.abline(v= Hours24-4*3600, lty=2, col = rgb(0,0,1,0.5));
  panel.abline(v=Hours24+6*3600, lty=2, col = rgb(0,1,0,0.5));
  bb <- par('usr')
  y0 <- bb[3];
  for (i in seq(r[1], r[2], by=48*3600)) panel.rect(xleft=i, ybottom=y0,
xright=i+24*3600-1, ytop=bb[4], col = rgb(0.75,0.75,0.75,0.3), border = NA);
  panel.axis(1, at= Hours24-4*3600,
labels=as.character(format(Hours24-4*3600,"%H")));
  #panel.axis(1, at= Hours24+6*3600, labels=format(x,"%H"));
  #panel.axis(3, at= Hours24, labels=format(x,"%a"), line = -1, tick =
FALSE);

}

        [[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.

Reply via email to