[R] bwplot [lattice]: how to get different y-axis scales for each row?

Marius Hofert m_hofert at web.de
Sun Mar 27 17:20:33 CEST 2011


Dear expeRts,

I partially managed to obtain what I wanted by using latticeExtra. However, the 
following questions remain:
1) why do not all x-axis labels appear? [compare bw and bw2]
2) Can I have the y-axis labels on the right margin/side of the plot? Changing
the "alternating" argument does not do the job since relation="free"

Cheers,

Marius



library(lattice)
library(latticeExtra)

## build example data set
dim <- c(100, 6, 4, 3) # n, groups, methods, attributes
dimnames <- list(n=paste("n=", seq_len(100), sep=""),
	         groups=paste("group=", seq_len(6), sep=""),
	         methods=paste("method=", seq_len(4), sep=""),
	         attr=paste("attribute=", seq_len(3), sep=""))
set.seed(1)	
data <- rexp(prod(dim))
arr <- array(data=data, dim=dim, dimnames=dimnames)
arr[,2,,] <- arr[,2,,]*10
arr[,4,2,2] <- arr[,4,2,2]*10
z <- abs(sweep(arr, 3, 1))
df <- as.data.frame.table(z, responseName="error")

## box plot
bw <- bwplot(error ~ methods | attr * groups, data=df, 
             as.table=TRUE, notch=TRUE,
             scales=list(y=list(alternating=c(1,1), tck=c(1,0)), 
             relation="free"))
(bw2 <- useOuterStrips(combineLimits(bw, extend=FALSE))))



On 2011-03-26, at 09:34 , Marius Hofert wrote:

> Dear expeRts,
> 
> How can I get ...
> (1) different y-axis scales for each row 
> (2) while having the same y-axis scales for different columns?
> 
> I coulnd't manage to do this with relation="free" [which gives (1) but not (2)].
> I also tried relation="sliced", but it did not give the same y-axis scales 
> within each row (see the fourth row). Further, it "separates" the panels.
> 
> Cheers,
> 
> Marius
> 
> ## minimal example:
> 
> library(lattice)
> 
> ## build example data set
> dim <- c(100, 6, 2, 3) # n, groups, methods, attributes
> dimnames <- list(n=paste("n=", seq_len(100), sep=""),
> 	         groups=paste("group=", seq_len(6), sep=""),
> 	         methods=paste("method=", seq_len(2), sep=""),
> 	         attr=paste("attribute=", seq_len(3), sep=""))
> set.seed(1)	
> data <- rexp(prod(dim))
> arr <- array(data=data, dim=dim, dimnames=dimnames)
> arr[,2,,] <- arr[,2,,]*10
> arr[,4,2,2] <- arr[,4,2,2]*10
> z <- abs(sweep(arr, 3, 1))
> df <- as.data.frame.table(z, responseName="error")
> 
> ## box plot
> bwplot(error ~ methods | attr * groups, data=df, 
>       as.table=TRUE, notch=TRUE,
>       scales=list(alternating=c(1,1), tck=c(1,0)))
> 
> ## with relation="sliced"
> bwplot(error ~ methods | attr * groups, data=df, 
>       as.table=TRUE, notch=TRUE,
>       scales=list(alternating=c(1,1), tck=c(1,0), relation="sliced"))
> 



More information about the R-help mailing list