2012-08-09 10 views
10

Beim Lesen von wissenschaftlichen Arbeiten stoße ich oft auf Punkte, bei denen Punkte vertauscht sind, ohne sich zu überlappen. Ich vermute, viele von ihnen sind mit einem Programm namens GraphPad Prism gezeichnet, aber sicherlich muss es eine Möglichkeit geben, das gleiche in R zu tun. Obwohl es nicht perfekt ist (wie bei den roten Punkten unten), denke ich, dass es viel besser aussieht als zufälliges Zittern.Vermeidung von Überlappungen beim Zittern von Punkten

Jittered points without overlap

Wenn jemand weiß, wie dies zu tun, vorzugsweise einige grundlegende Funktion, würde ich sehr glücklich zu wissen.

+4

dies oft ein * beeswarm Plot genannt wird *; Es gibt einige Funktionen in den neueren Versionen von ggplot2, die das tun –

+1

Ah, schön, einen Namen darauf zu bekommen. Macht es viel einfacher, mehr zu erfahren. Ich bin nicht so vertraut mit ggplot (immer bevorzugte Gitter), aber ich denke, ich könnte immer eine allgemeine Funktion für sie zurückentwickeln. Es scheint ein Paket namens [bienenwarm] (http://cran.r-project.org/web/packages/beeswarm/index.html) in CRAN zu sein, das es auch tut. – Backlin

+1

Relevantes Paket für ggplot: https://github.com/eclarke/ggbeeswarm –

Antwort

13

Hier ist eine ggplot2 Lösung geom_dotplot() mit:

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

Danke, das sieht gut aus! Und auch ziemlich einfach, könnte sogar meine anfängliche Verwirrung über ggplot2 heilen :) Ich werde für eine Weile nachdenken, um zu sehen, ob jemand weiß, wie man es in Gitter- oder Basisgrafiken macht. – Backlin

+0

Das [bienenwarm-Paket] realisiert (http://cran.r-project.org/web/packages/beeswarm/index.html) Ich erwähnte oben verwendet das Standard-Grafiksystem, so habe ich bereits zwei gute Möglichkeiten, um es zu erreichen . – Backlin

+0

Um die Größe der Datenpunkte anzupassen, fügen Sie eine Option dotsize zu geom_dotplot() hinzu. – wint3rschlaefer

Verwandte Themen