[R] two questions re: the use of lattice (Q1 SOLVED, not Q2)

Peter Ehlers ehlers at ucalgary.ca
Mon Jul 23 02:31:00 CEST 2012


On 2012-07-22 15:58, Ranjan Maitra wrote:
> On Sun, 22 Jul 2012 15:04:36 -0700 Peter Ehlers <ehlers at ucalgary.ca>
> wrote:
>
>> On 2012-07-22 09:02, Ranjan Maitra wrote:
>>> Dear friends,
>>>
>>> Many thanks to Jim (Holtman) and David (Carlson) for their quick
>>> responses: Q1 is now solved. There are two almost equivalent ways for
>>> doing this. They follow:
>>> library(lattice)
>>>
>>> z <- rbind(cbind(z, 0), cbind(z, 20), cbind(z, 40))
>>> z <- cbind(z, rnorm(n = nrow(z)))
>>> z <- as.data.frame(z)
>>> names(z) <- c("Method", "sigma", "INU", "Error")
>>> sigma <- as.numeric(levels(z$sigma))
>>> sigmaExprList <- lapply(sigma, function(s) bquote(italic(sigma) == .
>>> (s))) sigmaExpr <- as.expression(sigmaExprList)
>>>
>>> z$Method <- factor(z$Method, levels = c("BIC", "ICL", "s_v", "Q_v",
>>>     "sig-q", "s_lsk", "s_lML", "s_mlsk", "s_mlML", "s_la8", "s_haar"))
>>>
>>> bwplot(Error~Method | sigma, data = z[z[,"INU"] == 0,
>>>                                  ],scales=list(rot=90),
>>>          horiz = F, xlab = "Method", ylab = "Relative Error",
>>>          strip = function(which.given, which.panel, var.name,
>>>            strip.levels = FALSE,
>>>            strip.names = TRUE, ...) {
>>>            strip.default(which.given, which.panel,
>>>                          var.name = sigmaExpr[which.panel],
>>>                          strip.levels = FALSE,
>>>                          strip.names = TRUE, ...)
>>>           },
>>>           layout = c(1, 5),  col = "red")
>>>
>>> # On the other hand, if we do not want to change z$Method in perpetuity, we could do the following:
>>>
>>>
>>> z <- cbind(rep(c("BIC", "ICL", "s_v", "Q_v", "sig-q",
>>>                         "s_lsk", "s_lML", "s_mlsk", "s_mlML", "s_la8",
>>> "s_haar"), each = 250), rep(c(5, 10, 20, 30, 50), each = 50))
>>> z <- rbind(cbind(z, 0), cbind(z, 20), cbind(z, 40))
>>> z <- cbind(z, rnorm(n = nrow(z)))
>>> z <- as.data.frame(z)
>>> names(z) <- c("Method", "sigma", "INU", "Error")
>>> sigma <- as.numeric(levels(z$sigma))
>>> sigmaExprList <- lapply(sigma, function(s) bquote(italic(sigma) == .
>>> (s))) sigmaExpr <- as.expression(sigmaExprList)
>>>
>>> bwplot(Error~factor(Method, levels = unique(Method)) | sigma, data = z[z
>>> [,"INU"] == 0, ],scales=list(rot=90),
>>>          horiz = F, xlab = "Method", ylab = "Relative Error",
>>>          strip = function(which.given, which.panel, var.name,
>>>            strip.levels = FALSE,
>>>            strip.names = TRUE, ...) {
>>>            strip.default(which.given, which.panel,
>>>                          var.name = sigmaExpr[which.panel],
>>>                          strip.levels = FALSE,
>>>                          strip.names = TRUE, ...)
>>>           },
>>>           layout = c(1, 5),  col = "red")
>>>
>>>
>>>
>>> # However, I am unable to solve Q2. Actually, even more basic is the fact that I can not get Box-Whisker plots without anything else. David's suggestion of using useOuterStrips appears reasonable, but as I said, I can not get anything meaningful even before then.
>>>
>>> # Try:
>>>
>>> bwplot(Error~Methods | sigma + INU, data = z,scales=list(rot=90))
>>>
>>> Any suggestions?
>>
>> [I had to dig back to see what your Q2 was. It's good to keep context.]
>>
>> Try this:
>>
>>    p <- bwplot(Error~Method | sigma + INU, data = z,
>>           scales = list(rot=90), horiz = FALSE,
>>           layout = c(5,3), col = "red")
>>
>>    require(latticeExtra)
>>    useOuterStrips(p,
>>         strip = <<your sigma-strip function>>,
>>         strip.left = strip.custom(
>>             var.name = "INU", sep = " = ",
>>             strip.names = TRUE)
>>    )
>>
>
> This works!! Thanks very much!! May I also ask how I can put in a "%"
> after the INU value? i.e., I want the labels to be INU = 0%, INU = 20%,
> INU = 40% (instead of INU = 0, INU = 20 and INU = 40).

Define:

   INUExpr <- paste0("INU = ", c(0,20,40), "%")

Then

     useOuterStrips(p,
        strip = <<your sigma-strip function>>,
        strip.left = << your strip function with
               var.name = INUExpr[which.panel] >>
   )

Peter Ehlers

>
> Many thanks again!
> Ranjan
>
> ____________________________________________________________
> FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list