[R] Ordering boxplot factors; thank you!
Joseph LeBouton
lebouton at msu.edu
Mon Jan 9 02:57:46 CET 2006
Profs. Ripley and Schwartz,
Thank you both very much for the suggestions! These are exactly what I
was looking for. I'll re-read the boxplot help yet again; every time I
read it something essential worms its way into my consciousness, but it
enters more freely when I have a hint where to look. The sad truth is
that I was heading for a ~10-line hacker solution. You've saved me from
my usual code-writing ignomy.
Happy new year,
-Joseph
Prof Brian Ripley wrote:
> On Thu, 5 Jan 2006, Marc Schwartz wrote:
>
>> On Thu, 2006-01-05 at 20:27 -0600, Joseph LeBouton wrote:
>>
>>> Hi all,
>>>
>>> what a great help list! I hope someone can help me with this puzzle...
>>>
>>> I'm trying to find a simple way to do:
>>>
>>> boxplot(obs~factor)
>>>
>>> so that the factors are ordered left-to-right along the x-axis by
>>> median, not alphabetically by factor name.
>
>
> The thing to realize is that they are not alphabetic, but ordered by
> factor levels. So the key is to set the levels. (The help page for
> boxplot does say that, as I was relieved to find.)
>
>>> Complicated ways abound, but I'm hoping for a magical one-liner that'll
>>> do the trick.
>>>
>>> Any suggestions would be treasured.
>>>
>>> Thanks,
>>>
>>> -jlb
>>
>>
>>
>> Using the first example in ?boxplot, which is:
>>
>> boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
>>
>>
>>
>> Get the medians for 'count by spray' using tapply() and then sort the
>> results in increasing order, by median:
>>
>> med <- sort(with(InsectSprays, tapply(count, spray, median)))
>>
>>> med
>>
>> C E D A F B
>> 1.5 3.0 5.0 14.0 15.0 16.5
>>
>>
>> Now do the boxplot, setting the factor levels in order by median:
>>
>> boxplot(count ~ factor(spray, levels = names(med)),
>> data = InsectSprays, col = "lightgray")
>>
>>
>> So...technically two lines of code.
>
>
> This was answered yesterday in terms of bwplot. See ?reorder.factor
> for the same example done using reorder.factor. That will give you the
> single line asked for, and be self-explanatory.
>
--
************************************
Joseph P. LeBouton
Forest Ecology PhD Candidate
Department of Forestry
Michigan State University
East Lansing, Michigan 48824
Office phone: 517-355-7744
email: lebouton at msu.edu
More information about the R-help
mailing list