2012-08-09 14 views
10

科学論文を読むときに、ポイントが互いに重なり合わずにジッタをつけたプロットをよく見かける。私はそれらの多くがGraphPad Prismと呼ばれるプログラムで描かれていると思われますが、確かにRで同じことをする方法が必要です。完全なものではありませんが(以下の赤い点を参照してください)、ランダムジッタよりも優れています。ジッタポイントの重なりを避ける

Jittered points without overlap

誰もが好ましく、いくつかの基本的な機能を使って、これを行う方法を知っている場合は、私が知っていることは非常に幸せになると思います。ここで

+4

これは、多くの場合、*のbeeswarmプロット*と呼ばれています。これを行うggplot2の新しいバージョンにはいくつかの機能があります。 –

+1

ああ、名前をつけてよかったです。より多くの情報を見つけやすくなります。私はggplot(常に好ましい格子)に精通しているわけではありませんが、私はいつもそれに対して一般的な機能をリバースエンジニアリングできると思います。 CRANには[beeswarm](http://cran.r-project.org/web/packages/beeswarm/index.html)というパッケージもあります。 – Backlin

+1

ggplotの関連パッケージ:https://github.com/eclarke/ggbeeswarm –

答えて

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

+0

ありがとう、それはいいね!また、かなりシンプルでも、ggplot2の上に私の最初の混乱を治すかもしれない:)私はしばらく考えて、誰かが格子やベースのグラフィックでそれを行う方法を知っているかどうかを見て回ります。 – Backlin

+0

[beeswarmパッケージ](http://cran.r-project.org/web/packages/beeswarm/index.html)を実現私は上記の標準グラフィックスシステムを使用しているので、すでに2つの方法があります。 – Backlin

+0

データポイントのサイズを調整するには、geom_dotplot()にdotsizeオプションを追加します。 – wint3rschlaefer

関連する問題