2014-09-11 14 views
8

Rozważmy te dane (zauważ, że foo jest rzeczywiście czynnikiem.):uniku punktów i słupki błędów z 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 

Chcę wykreślić wiele bar s na foo wartości, z ich outcome i błędów barów z CI . Oto, co zrobić:

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) 

uzyskać:

Ale chciałem to unik słupki błędów i punktów tak widzę nakładania. Using position_jitter did that, ale był całkowicie losowy (lub "clunky") - Nie chcę tego.

Jak mogę zrównoważyć poszczególne obserwacje?

Czy to błąd z ggplot? The example here również shows this error.

Odpowiedz

9

Jedna z możliwości to group według "paska". Zauważ, że ja też mam dodgegeom_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

Brilliant, dzięki. Czy możesz wskazać mi dokumentację "grupy" lub wyjaśnić, dlaczego działa (lub co robi) w tym przypadku? – slhck

+0

@slhck, Możesz rzucić okiem na tekst pomocy na '? Aes_group_order' lub [** tutaj **] (http://docs.ggplot2.org/current/aes_group_order.html), gdzie również znajdziesz wyjście wszystkich przykładów. – Henrik

Powiązane problemy