[R] Boxplot lattice vs standard graphics

Massimo Bressan mbressan at arpa.veneto.it
Tue Sep 18 08:22:05 CEST 2012


ok, I see now!
here it is the reproducible example along with the final code (aslo with 
the median line instead of a point)

thank you all for the great help

max

# start code

library(lattice)

test<-structure(list(site = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L), .Label = c("A",
"B", "C", "D", "E"), class = "factor"), conc = c(2.32, 0.902,
0.468, 5.51, 1.49, 0.532, 0.72, 0.956, 0.887, 20, 30, 2.12, 0.442,
10, 50, 110, 3.36, 2.41, 20, 70, 3610, 100, 4.79, 20, 0.0315,
30, 60, 1, 3.37, 80, 1.21, 0.302, 0.728, 1.29, 30, 40, 90, 30,
0.697, 6.25, 0.576, 0.335, 20, 10, 620, 40, 9.98, 4.76, 2.61,
3.39, 20, 4.59)), .Names = c("site", "conc"), row.names = c(NA,
52L), class = "data.frame")

mystats <- function(x, ...){ # Here ...
   out <- boxplot.stats(10^x, ...)  # ...and here!!!
   out$stats <- log10(out$stats)
   out$conf <- log10(out$conf) ## Omit if you don't want notches
   out$out <- log10(out$out)
   out ## With the boxplot statistics converted to the log10 scale
}

dev.new()
bwplot(conc~site, data=test,
        pch="|",  # this is plotting a line instead of a point
        scales = list(y=list(log=10)),
        panel = function(...){
          panel.bwplot(..., stats = mystats)
        }
)

# end code

Il 17/09/2012 20:26, Rui Barradas ha scritto:
> Hello,
>
> Em 17-09-2012 18:50, David Winsemius escreveu:
>> On Sep 17, 2012, at 4:18 AM, maxbre wrote:
>>
>>> here it is, I think (I hope)  I'm getting a little closer with this, 
>>> but
>>> still there is something  to sort out...
>>>
>>> error using packet 1
>>> unused argument(s)  (coef =1.5, do.out=TRUE)
>>>
>>> by reading the help for panel.bwplot at the argument "stats" it 
>>> says: "the
>>> function must accept arguments coef and do.out even if they do not 
>>> use them
>>> (a ... argument is good enough). "
>>> I'm not sure how to couple with this...
>>>
>>> any help for this ?
>>>
>>> thanks
>>>
>>>
>>> ## start code
>>>
>>>
>>> mystats <- function(x){
>>>   out <- boxplot.stats(10^x)
>>>   out$stats <- log10(out$stats)
>>>   out$conf <- log10(out$conf) ## Omit if you don't want notches
>>>   out$out <- log10(out$out)
>>>   out$coef<-1.5 #??
>>>   out$do.out<-"TRUE" #??
>>>   out ## With the boxplot statistics converted to the log10 scale
>>> }
>>>
>>> bwplot(conc~site, data=test,
>>>        scales=list(y=list(log=10)),
>>>        panel= function(x,y){
>>>          panel.bwplot(x,y,stats=mystats)
>>>        }
>>>        )
>> No example data, so no efforts at running code.
>
> Actually there is, in the op.
>
>>
>> ?panel.bwplot
>>
>> # Notice the Usage at the top of the page. The "..." is there for a 
>> reason.
>>
>> # And notice that neither 'do.out' nor 'coef' are passed in the 
>> "stats" list
>>
>> # The message was talking about what arguments your 'mystats' would 
>> accept, .... not what it would return. It's another instance of your 
>> needing to understand what the "..." formalism is doing.
>>
>> ?boxplot.stats
>>
>> # I would be making a concerted effort to return a list with exactly 
>> the components listed there.
>
> And since I'm terrible at graphics I try to learn as much as possible 
> on R-Help. Here it goes.
>
>
> library(lattice)
>
> test<-structure(list(site = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
> 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
> 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L), .Label = c("A",
> "B", "C", "D", "E"), class = "factor"), conc = c(2.32, 0.902,
> 0.468, 5.51, 1.49, 0.532, 0.72, 0.956, 0.887, 20, 30, 2.12, 0.442,
> 10, 50, 110, 3.36, 2.41, 20, 70, 3610, 100, 4.79, 20, 0.0315,
> 30, 60, 1, 3.37, 80, 1.21, 0.302, 0.728, 1.29, 30, 40, 90, 30,
> 0.697, 6.25, 0.576, 0.335, 20, 10, 620, 40, 9.98, 4.76, 2.61,
> 3.39, 20, 4.59)), .Names = c("site", "conc"), row.names = c(NA,
> 52L), class = "data.frame")
>
>
> #standard graphics
> dev.new()
> with(test,boxplot(conc~site, log="y"))
>
> #lattice
> mystats <- function(x, ...){ # Here ...
>     out <- boxplot.stats(10^x, ...)  # ...and here!!!
>     out$stats <- log10(out$stats)
>     out$conf <- log10(out$conf) ## Omit if you don't want notches
>     out$out <- log10(out$out)
>     out ## With the boxplot statistics converted to the log10 scale
> }
>
> dev.new()
> bwplot(conc~site, data=test,
>        scales = list(y=list(log=10)),
>        panel = function(...){
>          panel.bwplot(..., stats = mystats)
>        }
> )
>
> With a median _line_ it would be perfect.
> (Not a follow-up, it was already answered some time ago, use pch = "|" 
> in panel.bwplot.)
>
> Rui Barradas
>>
>>> ## end code
>>>
>>>
>
>




More information about the R-help mailing list