Pablo,
I would do it similarly. I would also place the box and whiskers in
the specified colors.
## install.packages(HH) ## if you don't have it
library(HH)
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.bwplot.superpose,
col = c(red,"darkorange",green),
fill = c(red,"darkorange",green), fill.alpha=.6)
I changed your amber to "darkorange" as the amber lines are almost
invisible.
Rich
On Wed, Apr 22, 2015 at 9:26 PM, Duncan Mackay <dulcalma at bigpond.com>
wrote:
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
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:
ith-specific-color-depending-on-factor-level
Thank you in advance!
Pablo
[[alternative HTML version deleted]]