[R] Boxplot BUT with Mean, SD, Max & Min ?

Gabor Grothendieck ggrothendieck at gmail.com
Mon Sep 26 21:29:02 CEST 2011


On Mon, Sep 26, 2011 at 3:24 PM, Philip Rhoades <phil at pricom.com.au> wrote:
> Gabor,
>
>
> On 2011-09-27 04:31, Gabor Grothendieck wrote:
>>
>> On Mon, Sep 26, 2011 at 1:45 PM, Philip Rhoades <phil at pricom.com.au>
>> wrote:
>>>
>>> Gabor, Bill,
>>>
>>>
>>> On 2011-09-27 02:51, Gabor Grothendieck wrote:
>>>>
>>>> On Mon, Sep 26, 2011 at 12:11 PM, Philip Rhoades <phil at pricom.com.au>
>>>> wrote:
>>>>>
>>>>> Gabor,
>>>>>
>>>>>
>>>>> On 2011-09-27 00:35, Gabor Grothendieck wrote:
>>>>>>
>>>>>> On Mon, Sep 26, 2011 at 9:56 AM, Philip Rhoades <phil at pricom.com.au>
>>>>>> wrote:
>>>>>>>
>>>>>>> People,
>>>>>>>
>>>>>>> It appears that there is no way of getting Boxplots to plot using
>>>>>>> Mean,
>>>>>>> SD,
>>>>>>> Max & Min - is there something else that would do what I want?  I
>>>>>>> couldn't
>>>>>>> find it . .
>>>>>>>
>>>>>>
>>>>>> Try replacing the stats component of boxplot's output with your
>>>>>> desired statistics and then feeding that into the lower level bxp
>>>>>> function to do the graphics:
>>>>>>
>>>>>> bp <- boxplot(Nile, plot = FALSE)
>>>>>> bp$stats <- matrix(c(min(Nile), mean(Nile) + c(-1, 0, 1) * sd(Nile),
>>>>>> max(Nile)))
>>>>>> bxp(bp)
>>>>>
>>>>>
>>>>> Thanks for that!  What is the syntax when there is more than one set of
>>>>> data
>>>>> (ie a two dimensional vector)?  I tried messing around with stuff like:
>>>>>
>>>>>  mean(Nile[,2] etc
>>>>>
>>>>> but I get subscript out of range errors  . .
>>>>>
>>>>
>>>> Bill's example shows  how to do it with a list of numeric vectors.
>>>> Here is another example using the built in anscombe and making use of
>>>> my prior code, Bill's and Vining's:
>>>>
>>>> bp <- boxplot(anscombe, plot = FALSE)
>>>> bp$stats <- sapply(anscombe, function(x) c(min(x), mean(x) + c(-1, 0,
>>>> 1) * sd(x), max(x)))
>>>> bxp(bp, outline = FALSE)
>>>
>>>
>>> Interesting! - I've learnt something about anscombe and sapply and other
>>> stuff (thanks again!) but I think I mis-spoke before.  I think what I
>>> want
>>> is a list of numeric vectors but when I created tarr:
>>>
>>>  tarr <- array( dim = c( 5,3 ), c( 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 ) )
>>>
>>> I couldn't get it to work with the original code . . now I have had a
>>> closer
>>> look at Bill's code . .
>>>
>>> On the original question though, why isn't there something "off the
>>> shelf"
>>> that will do what I want?  Surely, a "boxplot" using mean, SD, max and
>>> min
>>> would be a common enough need to justify it?
>>>
>>
>> tarr is not a list or a data frame. Use.data.frame(tarr) so that  it
>> uses the same assumptions as the examples in this thread.
>
>
> Thanks!
>
>
>> I believe there is no such facility due to a philosophical opposition.
>
>
> A software design thing or a stats thing?
>
>
>>  Unless someone were careful they would naturally assume that boxplots
>> were shown even though that is not the case here.
>
>
> I don't understand what you mean here . .
>

Boxplots are really standard.  When one sees what appears to be a
boxplot they tend to assume it is a boxplot as defined everywhere else
and not some non-standard graphical representation where each of the
statistics graphed means something different than expected.



-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



More information about the R-help mailing list