R 在抖动点时避免重叠

R 在抖动点时避免重叠,r,plot,R,Plot,在阅读科学论文时,我经常会遇到点不重叠而抖动的情节。我怀疑其中许多是用一个名为的程序绘制的,但肯定有一种方法可以在R中实现同样的效果。尽管它并不完美(如下面的红色点),但我认为它看起来比随机抖动要好得多 如果有人知道如何做到这一点,最好是使用一些基本函数,我很乐意知道。这里有一个使用geom\u dotplot()的ggplot2解决方案。: 这通常被称为蜂群图;在较新版本的ggplot2中有一些函数可以做到这一点啊,很高兴在上面有个名字。使了解更多信息变得更容易。我对ggplot(总是首选晶

在阅读科学论文时,我经常会遇到点不重叠而抖动的情节。我怀疑其中许多是用一个名为的程序绘制的,但肯定有一种方法可以在R中实现同样的效果。尽管它并不完美(如下面的红色点),但我认为它看起来比随机抖动要好得多


如果有人知道如何做到这一点,最好是使用一些基本函数,我很乐意知道。

这里有一个使用
geom\u dotplot()的ggplot2解决方案。


这通常被称为蜂群图;在较新版本的ggplot2中有一些函数可以做到这一点啊,很高兴在上面有个名字。使了解更多信息变得更容易。我对ggplot(总是首选晶格)不是很熟悉,但我想我可以为它反向设计一个通用函数。似乎有一个名为in-CRAN的包也能做到这一点。ggplot的相关包:谢谢,看起来不错!而且也很简单,甚至可以解决我最初对ggplot2的困惑:)我会想一想,看看是否有人知道如何在晶格或基本图形中实现它。意识到我上面提到的使用标准图形系统,所以我已经找到了两种很好的方法来实现它。要调整数据点的大小,向geom_dotplot()添加一个dotsize选项
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)