2012-07-10 22 views
16

Hier ist meine Daten:Punkte mit Linien in ggplot2 in r Verbindungs ​​

mydata <- data.frame (grp = c( 1, 1, 1, 1, 1, 1, 1, 1, 1, 
    2,2, 2, 2,2, 2, 2, 2, 2), 
    grp1 = c("A", "A", "A", "A", "A", "B", "B", "B", "B" , 
    "A", "A", "A", "A",  "B", "B", "B", "B", "B"), 
    namef = c("M1", "M3", "M2", "M4", "M5","M1", "M3", "M4", 
    "M0", "M6", "M7", "M8",  "M10", "M6", "M7", "M8", "M9", "M10"), 
    dgp = c(1, 1, 1, 1, 1, 1.15, 1.15,1.15, 1.15 , 
     2, 2, 2, 2,2.15, 2.15, 2.15, 2.15, 2.15), 
    position = c(1.1, 2.1, 3.2, 4.1, 5.0, 
    1.1, 2.0, 5.0, 6.2, 1.0,3.0, 4.1, 5.0, 
    1.0, 2.1, 3.01, 4.0, 5.02)) 

require(ggplot2) 

plt <- ggplot(mydata) + geom_point(aes(position, dgp, 
group = factor(dgp)), size = 2, colour = "purple") + 
geom_text(data = mydata,aes(x=position,y=dgp + 0.05, 
label=namef)) 

plt

I-Punkt mit dem gleichen Label aus variablen NAMEF verbinden möchten. enter image description here

Ich dachte geom_segment geeignet ist, die Situation zu handhaben:

require(grid) 
plt + geom_segment(aes(xend = position, yend = dgp), 
arrow = arrow(length = unit(0.1,"cm"))) 

Antwort

16

geom_line werden die Punkte verbinden nach dem group Ästhetik, so:

ggplot(mydata, aes(position, dgp, group = namef)) + 
    geom_point(size = 2, colour = "purple") + 
    geom_line() + 
    geom_text(data = mydata,aes(x=position,y=dgp + 0.05, label=namef)) 

bekommt man diese:

enter image description here

Außerdem ist es im Allgemeinen besser, den aes() Anruf in dem ursprünglichen Anruf ggplot zu setzen, und dann auch nur ein aes() oder data Argument an die einzelnen GEOMS hinzufügen, wenn Sie einig Ästhetik außer Kraft setzen müssen.