[R] Stacked barchart color

hadley wickham h.wickham at gmail.com
Tue Jun 12 20:31:47 CEST 2007


On 6/12/07, Dieter Menne <dieter.menne at menne-biomed.de> wrote:
> Dear Latticer,
>
> I want to give individual colors to all elements in a simple stacked
> barchart. I know why the example below does not work (and it is a excellent
> default), but is there any workaround for this?
>
> Dieter
>
>
> # This only colors red and green, but I want blue and gray for Peatland.
>
> barchart(yield ~ variety , groups=year, data = barley,  stack = TRUE,
>   subset=site=="Grand Rapids" & variety %in% c("Velvet","Peatland"),
>     col=c("red","green","blue","gray"))

Hi Dieter,

You can do this with ggplot2 (http://had.co.nz/ggplot2) as follows:

library(ggplot2)

barley1 <- subset(barley, site=="Grand Rapids" & variety %in%
c("Velvet","Peatland"))
barley1[] <- lapply(barley1, "[", drop=TRUE)

qplot(variety, yield, data=barley1, geom="bar", stat="identity",
fill=factor(year))

barley1$fill <- c("red","green","blue","gray")
qplot(variety, yield, data=barley1, geom="bar", stat="identity",
fill=fill) + scale_fill_identity()

See http://had.co.nz/ggplot2/scale_identity.html and
http://had.co.nz/ggplot2/position_stack.html for more details.

Hadley



More information about the R-help mailing list