2016-01-26 5 views
1

Я пытаюсь создать диаграмму рассеяния, а затем добавить линии между точками в диаграмме рассеяния. Я могу получить эту работу, используя plot и segments, как показано ниже:Использование ggplot для связывания точек интереса в области рассеяния

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

Я хотел бы достичь того же типа идеи, но с использованием ggplot2. Мое рассуждение заключается в том, что я могу добавить эстетику в сюжет, а ggplot2 позволяет это больше, чем plot. Я пробовал варианты:

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

Но напрасно. Любые указатели были бы очень оценены!

ответ

4

Идея заключается в том, чтобы использовать geom_line и для определения групп (gr) для каждого сегмента:

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