Thank you, Deepayan, for the answer - and for creating amazingly helpful
tools!

Thanks also to Jim Lemon who pointed out a typo in the code:  S2 <
.025 should read S2 > .025,

Nathan

On Thu, Sep 30, 2010 at 5:21 AM, Deepayan Sarkar
<deepayan.sarkar@gmail.com>wrote:

> On Mon, Sep 27, 2010 at 7:11 AM, nathan pellegrin
> <nathan.pellegrin@gmail.com> wrote:
> > # Dear R Community,
> >
> > # I have this data frame:
> >
> > df1 <- data.frame(
> >        F1 = factor( c( rep("D1",12),rep("D2",12),rep("D3",12) ) ),
> >        F2 = factor( rep( rep( paste("O",1:6,sep=""), rep(2,6) ), 3) ),
> >        F3 = factor( rep( c("V1","V2"), 18 ) ),
> >        S1 =
> >
> c(8.840955e-02,2.546822e-01,7.562658e-01,8.801181e-01,6.041766e-02,2.172731e-01,6.542187e-98,
> >
> 7.067840e-04,1.430933e-01,9.764401e-01,1.380848e-05,1.192620e-01,9.107259e-01,1.235232e-01,
> >
> 3.021847e-01,1.331351e-01,5.272103e-01,3.663577e-01,1.539690e-38,2.224451e-01,2.873052e-01,
> >
> 5.110313e-01,7.840802e-01,8.210762e-10,1.553356e-01,4.173335e-01,5.964021e-01,4.955694e-01,
> >
> 8.849240e-02,5.739598e-01,1.879075e-17,1.071003e-03,7.298928e-01,6.347287e-01,8.884034e-01,
> > 4.460295e-11),
> >        S2 =
> >
> c(1.32249139,1.02831831,-0.09650252,-0.05454486,2.62105492,2.00310250,8.07269064,
> >
> -1.55397883,1.77390551,0.04161954,7.14188540,-2.98033713,-0.49904251,-0.74309058,
> >
> -0.49904251,-0.74309058,1.22492623,-1.79003492,7.60003121,-0.74549596,2.53418936,
> >
> -1.60112296,0.67131380,-15.31744351,-0.18380339,0.28628435,-0.18380339,0.28628435,
> >
> 2.96108998,1.18267783,5.78419118,2.70861763,0.66287857,1.10397741,0.27160971,
> > -15.37506924) )
> >
> >
> > # Two of the factors are used to define an array
> > # of panels with the third showing up as bars along the x axis.
> > # How do I color the bars according to their sign (red < 0, blue > 0)
> > # conditional on the value of S2 < .025 - in which case color them gray?
> > # Initially, I tried to pass a character vector specifying colors,
> > # which does not achieve the desired result:
> >
> > library(lattice)
> > library(latticeExtra)
> >
> > df1$barcols <- ifelse(df1$S1 <.025, "gray", ifelse( df1$S2 > 0,
> > "blue","red"))
> >
> >  ctp <- xyplot(S2 ~ F2 | F1 + F3,
> >              data=df1, as.table=TRUE, ylim=c(-10,10),
> >                panel = function(x,y){
> >                      panel.barchart(x,y,horizontal=FALSE, origin=0,
> >                          col=df1$barcols ) } )
> > useOuterStrips(ctp)
> >
> > # Any help you can provide would be greatly appreciated.
> > # Thank you!
>
> Itis better to keep the idea of grouping and the actual colors distinct.
>
> df1 <-
>    transform(df1,
>              colgrp = factor(ifelse(S1 <.025, "A",
>                                     ifelse( df1$S2 > 0, "B", "C")),
>                              levels = c("A", "B", "C")))
>
> barchart(S2 ~ F2 | F1 + F3, stack = TRUE,
>          data=df1, as.table=TRUE, ylim=c(-10,10),
>          groups = colgrp,
>         par.settings = simpleTheme(col = c("grey", "blue", "red")))
>
> -Deepayan
>

	[[alternative HTML version deleted]]

