2016-01-26 1 views
1

J'essaie de créer un nuage de points, puis d'ajouter des lignes entre les points du nuage de points. Je peux obtenir ce travail en utilisant plot et segments, comme indiqué ci-dessous:Utilisation de ggplot pour lier des points d'intérêt dans le nuage de points

set.seed(10) 
xvar = runif(10, 0, 1) 
yvar = runif(10, 0, 1) 

start = c(1, 1, 1, 9) 
end = c(2, 4, 6, 10) 

plot(xvar, yvar) 
segments(xvar[start], yvar[start], xvar[end],yvar[end], col= 'blue') 

Je voudrais obtenir le même type d'idée, mais en utilisant ggplot2. Mon raisonnement pour cela est que je peux vouloir ajouter de l'esthétique à l'intrigue, et ggplot2 permet cela plus de plot. J'ai essayé des variantes de:

ggplot(dat, aes(x = xvar, y = yvar)) + 
    geom_point(shape=20, size=1) + 
    segments(xvar[start], yvar[start], xvar[end], xvar[end], col = 'blue') 

Mais en vain. Tous les pointeurs seraient très appréciés!

Répondre

4

L'idée est d'utiliser geom_line et pour définir des groupes (gr) pour chaque segment:

dat <- data.frame(xvar = xvar, yvar = yvar)  
dat2 <- cbind(dat[c(start, end), ], gr = 1:length(start)) 

ggplot(dat, aes(x = xvar, y = yvar)) + geom_point(shape = 20, size = 1) + 
    geom_line(aes(x = xvar, y = yvar, group = gr), data = dat2) 

enter image description here