抖动点时避免重叠

时间:2012-08-09 18:04:13

标签: r plot

在阅读科学论文时,我经常遇到一些情节,在这些情节中,点不会相互重叠。我怀疑其中很多都是用一个名为GraphPad Prism的程序绘制的,但肯定必须有一种方法在R中做同样的事情。虽然它不完美(如下面的红点所示)我觉得它看起来好多了比随机抖动。

Jittered points without overlap

如果有人知道怎么做,最好使用一些基本功能,我会很高兴知道。

1 个答案:

答案 0 :(得分:13)

以下是使用geom_dotplot()的ggplot2解决方案:

library(ggplot2)
set.seed(1234)

dat = data.frame(y=c(rpois(20, 4), rpois(20, 1), runif(20, 0, 20)), 
                category=rep(c("group_1", "group_2", "group_3"), c(20, 20, 20)))

dotplot_1 = ggplot(dat, aes(x=category, y=y)) + 
            geom_dotplot(aes(fill=category), binaxis="y", 
                         stackdir="center", binwidth=0.8) +
            stat_summary(fun.y=median, fun.ymin=median, fun.ymax=median, 
                         geom="crossbar", width=0.7)

ggsave("dotplot_1.png", dotplot_1, width=6, height=4)

enter image description here