[R] Coloring Stripchart Points, or Better, Lattice Equivalent

Bryan Hanson hanson at depauw.edu
Sun Jun 22 19:09:25 CEST 2008


Thanks Gabor, I'm getting closer.

Is there a way to spread out resp values vertically for a given value of
index?  In base graphics, stripchart does this with method = "stack".  But
in lattice, stack = TRUE does something rather different, and I don't see a
combination of lattice arguments that does it like base graphics.

Thanks, Bryan


On 6/22/08 12:48 PM, "Gabor Grothendieck" <ggrothendieck at gmail.com> wrote:

> Actually I am not sure if my prior answer was correct.  I think its ok
> with one panel but
> you might have to use a panel function is there are several. With one
> panel it seems
> ok:
> 
> stripplot(~ index, all, col = all$col, pch = all$sym)
> 
> On Sun, Jun 22, 2008 at 12:28 PM, Gabor Grothendieck
> <ggrothendieck at gmail.com> wrote:
>> Try this:
>> 
>> library(lattice)
>> all$resp <- as.factor(all$resp)
>> stripplot(~ index | resp * yr, all, col = all$col, pch = all$sym,
>> layout = c(1, 4))
>> 
>> 
>> On Sun, Jun 22, 2008 at 10:43 AM, Bryan Hanson <hanson at depauw.edu> wrote:
>>> Below is a revised set of code that demonstrates my question a little more
>>> clearly, I hope.
>>> 
>>> When plotting all the data (5th panel), col & sym don't seem to be passed
>>> correctly, as the (random) first value for col & sym are used for all points
>>> (run the code, then run it again, you'll see how the 5th panel changes
>>> depending upon col & sym for the first data point).  The 5th panel should
>>> ideally be the "sum" of the 4 panels above, keeping col & sym intact.
>>> 
>>> Also, I would rather have this in lattice or ggplot2, if anyone sees how to
>>> convert it.
>>> 
>>> Thanks once again, several of you have made very useful suggestions off
>>> list.  Bryan
>>> 
>>> samples <- 100 # must be even
>>> index <- round(runif(samples, 1, 100)) # set up data
>>> resp <- rbinom(samples, 1, 0.5)
>>> yr <- rep(c("2005", "2006"), samples/2)
>>> all <- data.frame(index, resp, yr)
>>> all$sym <- ifelse(all$resp == 1, 1, 3)
>>> all$col <- ifelse(all$yr == 2005, "red", "blue")
>>> all$count <- rep(1, length(all$index))
>>> all <- all[order(all$index, all$yr, all$resp),] # for easier inspection
>>> row.names(all) <- c(1:samples) # for easier inspection
>>> 
>>> one <- all[(all$yr == 2005 & all$resp == 0),] # First 2005/0 at top
>>> two <- all[(all$yr == 2005 & all$resp == 1),] # Then 2005/1
>>> three <- all[(all$yr == 2006 & all$resp == 0),] # Now 2006/0
>>> four <- all[(all$yr == 2006 & all$resp == 1),] # Finally 2006/1
>>> 
>>> par(mfrow = c(5, 1))
>>> par(plt = c(0.1, 0.9, 0.25, 0.75))
>>> stripchart(one$index, method = "stack", ylim = c(0,10), xlim = c(1,100), col
>>> = one$col, pch = one$sym)
>>> mtext("2005/0", side = 3)
>>> stripchart(two$index, method = "stack", ylim = c(0,10), xlim = c(1,100), col
>>> = two$col, pch = two$sym)
>>> mtext("2005/1", side = 3)
>>> stripchart(three$index, method = "stack", ylim = c(0,10), xlim = c(1,100),
>>> col = three$col, pch = three$sym)
>>> mtext("2006/0", side = 3)
>>> stripchart(four$index, method = "stack", ylim = c(0,10), xlim = c(1,100),
>>> col = four$col, pch = four$sym)
>>> mtext("2006/1", side = 3)
>>> stripchart(all$index, method = "stack", ylim = c(0,10), xlim = c(1,100), col
>>> = all$col, pch = all$sym)
>>> mtext("col & sym always taken from 1st data point when all data is
>>> plotted!", side = 3)
>>> 
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> 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