[R] lattice: par.settings: custom axis.line by panel
Deepayan Sarkar
deepayan.sarkar at gmail.com
Fri Apr 8 06:26:38 CEST 2011
On Fri, Apr 8, 2011 at 6:10 AM, Benjamin Tyner <btyner at gmail.com> wrote:
> Hello,
>
> In lattice, is there a way to customize the axis.line by panel? For example,
> say I have two panels:
>
> Data <- data.frame(x=runif(10),
> y=rnorm(10),
> f=gl(2,5)
> )
>
> library(lattice)
> plot <- xyplot(y ~ x|f,
> data = Data,
> layout=c(2,1),
> scales=list(relation="free",alternating=FALSE),
> par.settings = list(axis.line=list(lwd=0))
> )
>
> and desire lwd=0 for one panel and lwd=1 for the other. Can it be done?
No.
> If not, can the desired behavior be mimicked by explicit use of (say)
> grid::grid.rect() within the panel function?
Yes, but using the axis function would be better as panel function
clips by default (so technically only half of each line would be
visible).
xyplot(y ~ x|f,
data = Data,
layout=c(2,1),
scales=list(relation="free",alternating=FALSE),
par.settings = list(axis.line=list(col = "transparent")),
axis = function(side, ...) {
## axis is called 4 times per panel; draw box only once
if (side == "bottom")
{
box.lty <-
if (panel.number() %in% c(1)) # add others as needed
0
else
1
grid::grid.rect(gp = grid::gpar(lty = box.lty))
}
axis.default(side = side, ...)
})
-Deepayan
More information about the R-help
mailing list