2014-09-11 24 views
8

Betrachten Sie diese Daten (beachten Sie, dass foo ist eigentlich ein Faktor.):Dodging Punkte und Fehlerbalken mit ggplot

foo bar outcome ci 
1 a 0.683333333 0.247447165 
2 b 0.941666667 0.180356565 
3 c 0.783333333 0.335337789 
1 d 0.866666667 0.204453706 
2 e 0.45 0.303059647 
3 f 0.325 0.340780173 

ich mehrere bar s pro foo Wert, mit ihren outcome und Fehlerbalken mit CI darstellen möchten . Hier ist, was ich tue:

ggplot(ex, aes(foo, outcome, label = bar)) + 
    geom_point(position = position_dodge(.1)) + 
    geom_errorbar(aes(ymin = outcome - ci, ymax = outcome + ci), position = position_dodge(.1)) + 
    geom_text(hjust = 2) 

ich:

Aber ich wollte es Dodge die Fehlerbalken und Punkte, damit ich die Überlappung sehen. Using position_jitter did that, aber es war total zufällig (oder "clunky") - ich will das nicht.

Wie kann ich die einzelnen Beobachtungen kompensieren?

Oder ist das ein Fehler mit ggplot? Die example here auch .

Antwort

9

Eine Möglichkeit ist group von 'bar'. Beachten Sie, dass ich auch dodge die geom_text.

dodge <- position_dodge(.1) 

ggplot(data = df, aes(x = foo, y = outcome, group = bar, label = bar)) + 
    geom_point(position = dodge) + 
    geom_errorbar(aes(ymin = outcome - ci, ymax = outcome + ci), position = dodge) + 
    geom_text(hjust = 2, position = dodge) 

enter image description here

+1

Briliant, danke. Kannst du mich auf die Dokumentation von "Gruppe" hinweisen oder erklären, warum es in diesem Fall funktioniert (oder was es tut)? – slhck

+0

@slhck, Sie können sich den Hilfetext unter '? Aes_group_order' oder [** hier **] (http://docs.ggplot2.org/current/aes_group_order.html) ansehen, wo Sie auch die Ausgabe finden aller Beispiele. – Henrik

Verwandte Themen