[R] Multiple color schemes for barchart (lattice)

Deepayan Sarkar deepayan.sarkar at gmail.com
Wed Jun 6 22:44:18 CEST 2007


On 6/6/07, Sarah Hawley <sarah at canaryfoundation.org> wrote:
> Hello R-help.
>
> I am trying to make a stacked barplot where the color of the sections of
> each bar depend on another variable.
>
> > myData[1:11,]
>    score   percent    marker     cellType Malignant
> 1      0 100.00000 ESR1 (ER) Bladder.M(5) TRUE
> 2      0  80.00000      PAX8 Bladder.M(5) TRUE
> 3      1  20.00000      PAX8 Bladder.M(5) TRUE
> 4      0 100.00000 ESR1 (ER)   Brain.N(3) FALSE
> 5      0 100.00000      PAX8   Brain.N(3) FALSE
> 6      3 100.00000 ESR1 (ER) Breast.M(11) TRUE
> 7      0 100.00000      PAX8 Breast.M(11) TRUE
> 8      0  36.36364 ESR1 (ER) Cervix.M(11) TRUE
> 9      1   9.09091 ESR1 (ER) Cervix.M(11) TRUE
> 10     2  18.18182 ESR1 (ER) Cervix.M(11) TRUE
> 11     3  36.36364 ESR1 (ER) Cervix.M(11) TRUE
>
> palette <- palette(gray(seq(0, 1,len=4)))
> trellis.par.set(list(par.xlab.text=list(cex=0.85)
>                    , superpose.polygon=list(col=palette())
>                    , axis.text=list(cex=0.8)))
>
>
> barchart(percent~cellType|marker
>         , groups=score
>         , data=myData
>         , stack=TRUE
>         , xlab='N=Normal/Benign, M=Malignant'
>         , ylab='Percentage of Cores Staining'
>         , color=palette()
>         , auto.key = list(points = FALSE, rectangles = TRUE, space = "top")
>         , scales=list(x=list(rot=70))
>         , layout=c(1,2))
>
> I would like to make the color scheme of the bar differ according to the
> variable 'Malignant' and add a second color scheme to the key.

I may not have understood what you are looking for, but it seems like
you just need

groups = interaction(score, Malignant)

For example,

palette <- palette(gray(seq(0, 1,len=8)))

trellis.par.set(list(par.xlab.text=list(cex=0.85)
                  , superpose.polygon=list(col=palette())
                  , axis.text=list(cex=0.8)))

barchart(percent~cellType|marker
       , groups= interaction(score, Malignant)
       , data=myData
       , stack=TRUE
       , xlab='N=Normal/Benign, M=Malignant'
       , ylab='Percentage of Cores Staining'
       # , color=palette() # not doing anything
       , auto.key = list(points = FALSE, rectangles = TRUE, space =
"top", columns = 2)
       , scales=list(x=list(rot=70))
       , layout=c(1,2))

-Deepayan



More information about the R-help mailing list