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
# 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()