[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