【问题标题】:Avoiding overlap when jittering points抖动点时避免重叠
【发布时间】:2012-08-10 08:16:33
【问题描述】:

在阅读科学论文时,我经常会遇到点在不相互重叠的情况下抖动的情节。我怀疑它们中的许多是用一个名为GraphPad Prism 的程序绘制的,但肯定有一种方法可以在 R 中做同样的事情。虽然它并不完美(如下面的红点)我认为它看起来比随机的要好得多抖动。

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

【问题讨论】:

  • 这通常被称为蜂群图;在新版本的 ggplot2 中有一些功能可以做到这一点
  • 啊,很高兴得到一个名字。使了解更多信息变得更加容易。我对 ggplot (总是首选格)不是很熟悉,但我想我总是可以为它逆向工程一个通用函数。在 CRAN 中似乎有一个名为 beeswarm 的包也可以做到这一点。
  • ggplot相关包:github.com/eclarke/ggbeeswarm

标签: r plot


【解决方案1】:

这是一个使用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)

【讨论】:

  • 谢谢,看起来不错!而且也很简单,甚至可以解决我最初对 ggplot2 的困惑 :) 我会坚持一段时间,看看是否有人知道如何在晶格或基础图形中做到这一点。
  • 实现了我上面提到的beeswarm package使用了标准的图形系统,所以我已经有了两个很好的方法来完成它。
  • 要调整数据点的大小,在 geom_dotplot() 中添加一个 dotsize 选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2016-06-30
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
相关资源
最近更新 更多