On 4/14/06, Eric Archer <Eric.Archer at noaa.gov>
wrote:> Given the following data frame ("freq.sp"),
>
> > str(freq.sp)
> `data.frame': 42 obs. of 4 variables:
> $ behav : Factor w/ 6 levels "approach","bowride",..:
1 1 1 1 1 1 1 2
> 2 2 ...
> $ species: Factor w/ 7 levels
"COAST_SPOT","EAST_SPINR",..: 1 2 3 4 5 6
> 7 1 2 3 ...
> $ n : int 193 194 563 357 570 369 74 194 208 633 ...
> $ pct : num 0.725 0.340 0.252 0.381 0.072 ...
>
> I create a trellis barchart with the following command,
>
> barchart(pct ~ behav | species, data=freq.sp, as.table=TRUE,
> xlab="Behavior",
> ylab="Frequency", ylim=c(0,1), main="Frequencies of
Behaviors",
> scales=list(x=list(rot=45)))
>
> In this graph, I would like to include the sample sizes (the value of
> freq.sp$n corresponding to each freq.sp$pct) at the top of each bar. I
> don't see a specific command in barchart that will allow me to do this
> and am fairly new to lattice graphics. I've done RSiteSearches on
> keywords that I could think of, but didn't run across anything I
> recognized as useful. Any pointers on how to accomplish this would be
> greatly appreciated. Thanks in advance.
Here's an example using the barley data. For more flexible placement
of the text, use grid.text from the grid package directly (instead of
panel.text):
library(lattice)
barchart(I(yield / sum(yield)) ~ variety | site, barley,
subset = (year == "1931"),
scales = list(x = list(rot = 45)),
label = round(barley$yield),
panel = function(x, y, label, subscripts, ...) {
lab <- label[subscripts]
panel.barchart(x, y, ..., subscripts = subscripts)
panel.text(x = x, y = y + 0.001, lab = lab,
cex = 0.5)
})
Deepayan
--
http://www.stat.wisc.edu/~deepayan/