[R] (Small) problem with barchart

Deepayan Sarkar deepayan.sarkar at gmail.com
Sun Feb 3 17:53:44 CET 2008


On 2/3/08, K. Elo <maillists at nic.fi> wrote:
> Hi,
>
> I have a small problem when using barchart. I have the following data:
>
>    letters  a
> 6        f 18
> 1        a 15
> 10       j 12
> 9        i 12
> 4        d  9
> 5        e  6
>
> The data is from a survey and summaries the alternatives selected in one
> question. The idea is to have a bar chart illustrating the count of
> each selection in descending order. The data frame is already ordered
> in descending order. Thus, the chart _should_ look like this:
> f |xxxxxxxxxxxxxxxxxx
> a |xxxxxxxxxxxxxxx
> j |xxxxxxxxxxxx
> i |xxxxxxxxxxxx
> d |xxxxxxxxx
> e |xxxxxx
>
> But if I use the command:
> > barchart(DATA[[2]] ~ DATA[[1]])
>
> The bars are displayed in alphabetical order.
>
> How could I get the graph I would like to have?

You have the choice of

(1) ordering the levels by their appearance in DATA

(2) ordering them in increasing order of 'a' (irrespective of original order)

For (1), you should use the 'levels' argument of factor(). For (2),
the reorder() function is helpful, and more general for your use (but
note that it's first argument already has to be a factor).

Assuming that DATA is a data frame and the 'letters' variable is
already a factor, you could try

barchart(factor(letters, levels = unique(letters) ~ a, data = DATA)

or

barchart(reorder(letters, a) ~ a, data = DATA)

I would also encourage you to use 'origin = 0', or if you don't like
that, use dotplot() instead of barchart().

-Deepayan



More information about the R-help mailing list