Jak mogę „uchylić” pozycję geom_point w ggplot2?

19

Używam ggplot2 w R do tworzenia wykresów takich jak te:

wprowadź opis zdjęcia tutaj

Paski błędów nakładają się na siebie, co wygląda na bardzo niechlujne. Jak mogę oddzielić paski błędów dla różnych indeksów? Użyłem position = "dodge", ale wydaje się, że nie działa. Oto główna część mojego kodu:

plot =  ggplot(data,aes(x=ntrunc,y=beta_best,group=ntrunc,colour=INDEX))
       +geom_point(aes(shape=detectable),na.rm=TRUE,position="dodge") 
        +geom_errorbar(aes(x=ntrunc,ymax=beta_high,ymin=beta_low),na.rm=TRUE,position="dodge")
ycc
źródło
1
Czy próbowałeś różnych wartości „unik”? Na przykład coś takiego: position = position_dodge(width = 0.90). Zobacz także ten post .
COOLSerdash
Dziękuję za twój przykład. Jednak właśnie wypróbowałem różne wartości szerokości i nadal nie działa.
ycc
2
Trudno jest znaleźć rozwiązania bez oryginalnego zestawu danych. Ale mam jedno pytanie: dlaczego twoje wartości i „grupy” są takie same? Co to jest ? Nie powinno być ? xntruncgroupINDEX
COOLSerdash
Działa teraz po zmianie grupy = „INDEX”. Myślę, że źle zrozumiałem znaczenie „grupy”. Dzięki @COOLSerdash
ycc

Odpowiedzi:

12

Grupa powinna = INDEX zamiast ntrunc w AES.

plot =  ggplot(data, aes(x=ntrunc, y=beta_best, group=INDEX, colour=INDEX)) +
   geom_point(aes(shape=detectable), na.rm=TRUE, position="dodge") +
   geom_errorbar(aes(x=ntrunc, ymax=beta_high, ymin=beta_low), na.rm=TRUE, position="dodge")

Fabuła wygląda teraz lepiej.

wprowadź opis zdjęcia tutaj

ycc
źródło
7
Nie działało to dla mnie, dopóki nie użyłemgeom_point(aes(shape=detectable),na.rm=TRUE, position=position_dodge(width=0.3))
Nova
Byłoby wspaniale uzyskać tutaj przykładowe dane, ponieważ nie mogę odtworzyć twojego wyniku.
Léo Léopold Hertz -
1
@Nova zgaduję, że odpowiedź została zerwana, gdy ggplot2przeszedłem z wersji 0.9.Xna 1.Xlub2.X
Richard Erickson