2012-07-10 21 views
16

Ecco il mio dati:punti di collegamento con le linee in ggplot2 in r

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

voglio collegare punti con la stessa etichetta dalla NAMEF variabile. enter image description here

ho pensato geom_segment è opportuno gestire la situazione:

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

risposta

16

geom_line si collegherà i punti in base alla group estetica, in modo da:

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)) 

si ottiene questo:

enter image description here

Inoltre, è generalmente migliore per mettere la chiamata aes() nella chiamata originale a ggplot, e quindi aggiungere solo un argomento aes() o data ai singoli GEOMs se è necessario sovrascrivere alcuni estetica.

Problemi correlati