2016-04-20 19 views
2

Ich kann kein Beispiel finden, wie man das macht. Ich versuche, Linien mit geom_line zu zeichnen, aber die überlappenden Elemente auszuweichen, und es scheint nicht zu funktionieren.R ggplot2 geom_line position dodge

Hier sind meine Daten:

> sa 
    id ep type grp variable value 
1: 1 1 typ1 1  st  1 
2: 1 2 typ1 2  st 60 
3: 1 3 typ1 3  st 120 
4: 1 1 typ2 4  st 20 
5: 1 2 typ2 5  st 60 
6: 2 1 typ1 6  st  1 
7: 2 2 typ1 7  st 80 
8: 2 3 typ1 8  st 170 
9: 2 1 typ2 9  st 10 
10: 2 2 typ2 10  st 60 
11: 2 3 typ2 11  st 120 
12: 1 1 typ1 1  en 50 
13: 1 2 typ1 2  en 100 
14: 1 3 typ1 3  en 150 
15: 1 1 typ2 4  en 40 
16: 1 2 typ2 5  en 100 
17: 2 1 typ1 6  en 40 
18: 2 2 typ1 7  en 150 
19: 2 3 typ1 8  en 200 
20: 2 1 typ2 9  en 50 
21: 2 2 typ2 10  en 90 
22: 2 3 typ2 11  en 190 

Hier ist mein einfacher Code versucht auszuweichen überlappende Werte für typ1 und typ2

ggplot(sa,aes(x=value,y=id,group=grp,color=type)) + geom_line(size=6,position="dodge") 

plot I get

Dies ist, was ich sehe. Wie weiche ich den überlappenden Balken aus?

+1

vielleicht, wenn Sie id a machen Faktor, Ausweichen wird funktionieren –

Antwort

5

Ich glaube nicht, dass Sie vertikal ausweichen können, aber eine andere Option ist nur, um ein wenig selbst ausweichen. Zum Beispiel:

eps = 0.05 

ggplot(sa, aes(x=value, y=ifelse(type=="typ1", id + eps, id - eps), 
       group=grp, color=type)) + 
    geom_line(size=6) + 
    scale_y_continuous(breaks=1:2, limits=c(min(sa$id-eps), max(sa$id+eps))) 

Sie werden mit der Menge an Ausweichen, Achsgrenzen spielen um, usw., das gewünschte Aussehen für ein bestimmtes Seitenverhältnis erhalten möchten.

enter image description here

5

können Sie nur ausweichen horizontal, aber man kann durch Umklappen Ihre x- und y-Ästhetik und mit coord_flip um dieses Problem zu erhalten:

ggplot(sa, aes(x = id, y = value, group = grp, color = type)) + 
    geom_line(size = 6, position = position_dodge(width = 0.1)) + 
    coord_flip() 

dodged plot

Verwandte Themen