Search code examples
rggplot2overlapstripchart

How does one overcome overlapping points without jitter or transparency in ggplot2


I am starting to use ggplot2. I have some small n (about 30 or so) granular data with lots of overlap. Neither jitter nor alpha (transparency) are suitable. Instead a stripchart with stack and offset do it best but I do not know how to do it in ggplot2. Do you know?

To see what the end result should be click on this graphic.

Here is the script I used a few years ago.

stripchart(SystData$DayTo1Syst~SystData$strain,vertical=TRUE,method="stack",pch=19,offset=.3,xlab="Strain",main="Rapidity of Systemic Disease Onset",ylab="Days post inoculation")

Solution

  • # your data
    df <- data.frame(gp = rep(LETTERS[1:5], each =8), y = sample(1:4,40,replace=TRUE))
    # calculate offsets
    df <- ddply(df, .(y, gp), transform, offset = (1:length(gp)-1)/20)
    qplot(gp, y, data=df) + stat_identity(aes(as.numeric(gp)+offset)) + theme_bw()