Skip to content

How to sort a grouped barchart?

4 messages · David Winsemius, Greg Snow, LeandroTV

#
Hi,

I have a barchart very similar to the example on the function documetation,
however, I want to sort the bars according one group in one panel.

Reminding:
library(lattice)
barchart(yield ~ variety | site, data = barley,
         groups = year, layout = c(1,6),
         ylab = "Barley Yield (bushels/acre)", auto.key=list(),
         scales = list(x = list(abbreviate = TRUE,
                       minlength = 5))) 

I want to sort the yield value, in "waseca" site (e.g.), according the group
of 1931. How can I do this???

Thanks
#
On May 6, 2010, at 9:01 PM, LeandroTV wrote:

            
You can reverse the year factor variable levels before plotting:

barley$year.r <- factor(barley$year, levels=rev(levels(barley$year))  )

... and then use the reversed factor. I don't think it would be fair  
to the reader to reverse the positions in just one panel. You did not  
say so but I suspect that you wanted to ask something along the lines  
of:
     sort the plotting order of the "variety" by the yield of the  
variety in one of the years, perhaps 1931?
#
See my recent reply under the subject "bar order using lattice barchart()"

Running this code before doing your plot:

barley$variety <- reorder(barley$variety, barley$yield, function(x) x[2] )

will cause the bars in all the plots to be reordered such that 1931 Waseca is increasing, is that what you wanted?
1 day later