Skip to content
Back to formatted view

Raw Message

Message-ID: <200409241519.30575.deepayan@stat.wisc.edu>
Date: 2004-09-24T20:19:30Z
From: Deepayan Sarkar
Subject: bwplot panels like stripplot
In-Reply-To: <7E4C06F49D6FEB49BE4B60E5FC92ED7A96D942@pnlmse35.pnl.gov>

On Friday 24 September 2004 14:45, Waichler, Scott R wrote:
> >> I would like to plot horizontal box-and-whisker plots in lattice
>
> where
>
> >> each factor has its own panel and scales are "free."  Below is a
> >> stripplot version of what I have in mind.  Substituting "bwplot"
> >> doesn't work.
> >
> > This won't work (easily) with R <= 1.9.1. Try with 2.0.0 beta, and
> > let
>
> us know if you still have problems.
>
> > Deepayan
>
> It still doesn't work.  Once again,
>
> > R.version.string
>
> [1] "R version 2.0.0, 2004-09-24"
>
> x <- c(runif(100, 0, 1), runif(100, 1, 2), runif(100, 2, 3))
> y <- c(rep("First", 100), rep("Second", 100), rep("Third", 100))
>
> # this works fine
> stripplot(x | y,
>           layout=c(1,3),
>           scales=list(relation="free"),
>           as.table=T,
>           bg="white"
>          )
>
> # this doesn't
> bwplot(x ~ y,
>        layout=c(1,3),
>        scales=list(relation="free"),
>        as.table=T,
>        bg="white",
>        horizontal=T
>       )
>
> Error in Ops.unit(do.call("max", lab.unit), tick.unit) :
>         Both operands must be units
> In addition: Warning messages:
> 1: x should be numeric in: bwplot(x ~ y, layout = c(1, 3), scales =
> list(relation = "free"),
> 2: no finite arguments to max; returning -Inf

I'm completely confused.

First of all, your two calls are not comparable -- stripplot has the 
`formula' x|y (which incidentally is undocumented and completely 
unreliable), while bwplot has x ~ y. 

Secondly, y is a character vector, which is inappropriate (you probably 
want it to be a factor). You might still have expected it to work, but 
to make things more complicated, horizontal=T, which means your 'x' 
should be the factor, which makes your 'y' completely uninterpretable.

The bwplot equivalent of your stripplot call (with the formula changed 
to a valid equivalent), namely

bwplot(~x | y,
       layout=c(1,3),
       scales=list(relation="free"),
       as.table=T,
       bg="white"
       )

works as expected for me. I have no idea what you expect bg="white" to 
achieve, though.

Deepayan