2013-04-24 17 views
2

다음 그림에서 발달 궤도를 그리기를 원합니다. 즉, 2009 년과 2010 년의 점을 화살표가있는 선 (2010 년을 가리킴)으로 연결해야합니다. 2010 년과 2011 년은 선으로 연결해야합니다 화살표 (2011 년을 가리킴) 등등 ...발달 궤적을 포함한 산점도

이 내용은 두 그룹 모두에게 적용됩니다. 여기

는 내가 지금까지했던 것입니다 :

library(ggplot2) 

x <- c(100, 200, 300, 200, 500, 320, 300, 50) 
y <- c(100, 250, 600, 700, 60, 120, 200, 360) 
t <- rep(seq(2009,2012),2) 
z <- rep(c("A","B"),each=4) 

d <- as.data.frame(cbind(z,t,x,y)) 
d <- d[order(d$z, d$t),] 

ggplot(data = d, aes(x = x, y = y, colour = z, label=t)) + 
    geom_line(aes(group = z)) + 
    geom_point() + 
    geom_text() 

enter image description here

내이 문제는 다음과 같습니다 : (1) "잘못된"점을 연결하고 (2) 화살표 머리가 누락되었습니다.

+1

(1) 대신에'geom_path'를 시도하고 (2)를 돕기 위해'arrow' 인자를 주목하십시오. – joran

답변

4

z2을 추가하여 ggplot2에 각 줄을 별도의 세그먼트로 표시해야했습니다. 그렇지 않으면 각 세그먼트 그룹의 끝에 만 화살촉이 그려집니다. 코드는 최고의 설명 :

library(grid) 
library(ggplot2) 

x <- c(100, 200, 300, 200, 500, 320, 300, 50) 
y <- c(100, 250, 600, 700, 60, 120, 200, 360) 
t <- rep(seq(2009,2012),2) 
z <- rep(c("A","B"),each=4) 
z2 <- LETTERS[1:length(z)] 

d <- as.data.frame(cbind(z,z2,t,x,y)) 
d <- d[order(d$z, d$t),] 

ggplot(data = d, aes(x = x, y = y, colour = z2, label=t)) + 
    geom_path(aes(group = z), arrow = arrow(ends = "last")) + 
    geom_point() + 
    geom_text() 

... 그리고

enter image description here

지금 당신은 단지 colorscale을 약간 조정할 또는 z2에 대해 서로 다른 미학을 사용할 필요가 결과.

+0

그것은 빨랐다. 당신의 도움을 주셔서 감사합니다! – majom