[R] R lattice bwplot: Fill boxplots with specific color depending on factor level

Duncan Mackay dulcalma at bigpond.com
Thu Apr 23 03:26:22 CEST 2015


hi Pablo

set.seed(1) # for reproducibility of data.frame
mydata <- rbind(data.frame(Col1 = rnorm(2*1000),Col2 =rep(c("A", "C"),
each=1000),Col3=factor(rep(c("YY","NN"), 1000))),data.frame(Col1 =
rnorm(1000),Col2 =rep(c("B")),Col3=factor(rep(c("YY","YN"), 500))))
mydata$Col2 <- factor(mydata$Col2)

In future please do not put * at end makes it harder to copy

red=rgb(249/255, 21/255, 47/255)
amber=rgb(255/255, 200/255,0/255) # amended to reveal a colour difference
green=rgb(39/255, 232/255, 51/255)

# As  Deepayan Sarkar said bwplot is different to others

bwplot(mydata$Col1~mydata$Col3 | mydata$Col2,data=mydata,
       groups = Col3,
       as.table = TRUE, # added to make it easier for factor levels
       layout = c(3,1), # looks nicer and easier to read 
       panel = panel.superpose,
       panel.groups = panel.bwplot,
       fill = c(red,amber,green)
)

Duncan

Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2351
Email: home: mackay at northnet.com.au

-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Pablo
Fleurquin
Sent: Thursday, 23 April 2015 02:03
To: r-help at r-project.org
Subject: [R] R lattice bwplot: Fill boxplots with specific color depending
on factor level

Hi,

I thoroughly looked for an answer to this problem with no luck.

I have a dataframe with 3 factor levels: YY, NN, YN

*>mydata <- rbind(data.frame(Col1 = rnorm(2*1000),Col2 =rep(c("A", "C"),
each=1000),Col3=factor(rep(c("YY","NN"), 1000))),data.frame(Col1 =
rnorm(1000),Col2 =rep(c("B")),Col3=factor(rep(c("YY","YN"), 500))))*

Being Col3 of factor type with 3 levels: NN YY YN

I want to make a boxplot using lattice bwplot and assign to each level a
specific color:






*# NN:>red=rgb(249/255, 21/255, 47/255)# YN:>amber=rgb(255/255, 126/255,
0/255)# YY:>green=rgb(39/255, 232/255, 51/255)*

Using bwplot function:


* >pl<-bwplot(mydata$Col1~mydata$Col3 |
mydata$Col2,data=mydata,ylab=expression(italic(R)),panel=function(...){panel
.bwplot(...,groups=mydata$Col3,
fill=c(red,amber,green))})*

IF YOU REPRODUCE THE EXAMPLE YOU WILL SEE THAT THE COLORS ARE NOT RELATED
TO THE LEVELS IN MY DATAFRAME AS YY BOX IS NOT ALWAYS GREEN.

IS THERE A WAY TO ASSIGN YY:green, NN:red, YN:amber?

You can see the resulting figure in:
http://stackoverflow.com/questions/29802129/r-lattice-bwplot-fill-boxplots-w
ith-specific-color-depending-on-factor-level

Thank you in advance!
Pablo

	[[alternative HTML version deleted]]

______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list