2015-01-06 4 views
1

30 개의 데이터 점 (그림의 녹색 점)에 대한 x-y 좌표 목록이 있으며이를 함께 연결하고자합니다.가장 가까운 이웃 점 연결

plot

어떻게 그것은 R에서 할 수 있습니까? 지금은 각 점의 가장 가까운 이웃을 얻기 위해 각 점 사이의 거리 행렬을 dist()으로 계산했습니다. 그러나 30 에지 쌍에서이 결과는 ... 때로는 여러 가장자리 내가 R에서이 문제를 해결할 수있는 방법 :(하지 동일한 지점에 연결할?는 "기호 점"이 무엇인지 확실하지

cities_num=10 
    cor.matrix=matrix(0,nrow=cities_num,ncol=2) 
    for (r in 1:cities_num){ 
    cor.matrix[r,]=c(sample(1:500, 1),sample(1:500, 1))} 
    par(mar=c(4,4,2,4)) 
    plot(cor.matrix,pch=4,xlab="X coordinate",ylab="Y coordinate") 
    centroid.x=mean(cor.matrix[,1]) 
    centroid.y=mean(cor.matrix[,2]) 
    bead_num=cities_num+20 
    t=seq(0,pi*2,length=bead_num) 
    coords=t(rbind(centroid.x+sin(t)*10, centroid.y+cos(t)*10)) 
    for (point in 1:bead_num){ 
    symbols(x=coords[,1][point],y=coords[,2][point],circles=0.5, 
      inches = FALSE, add = TRUE) 
    } 
+1

당신이의 형식을 제공 할 수있다 : 단지 일반 포인트는 다음 사용하는 경우 polygon 나는 "포인트"내 자신의 세트를 만들어 귀하의 코드에 너무 많은 정의되지 않은 객체가있을 듯 우리가 무언가와 함께 작업 할 수 있도록 데이터가 있습니까? – CephBirk

+1

안녕하세요, 저는 방금 내 코드를 포함 시켰습니다. 기본적으로 모든 심볼 점을 라인 단위로 연결할 수 있기를 원합니다. – cchau

답변

0

을 .

dat <- data.frame(s=sin(seq(pi,-pi,length=25)), 
        c=cos(seq(pi,-pi,length=25))) 
png(); 
    plot(0,0, xlim=c(-1.5,1.5),ylim=c(-1.5,1.5)); 
     with(dat, points(s,c)); 
     with(dat, polygon(s,c)) 
dev.off() 

enter image description here

+0

안녕하세요, 답장 보내 주셔서 감사합니다. 내 포인트에 대한 xy 좌표는 때때로 움직일 것이고 마지막에는 좋은 원이되지 않을 것입니다. 그 밑에 산포도가 있기 때문에 symbol()을 사용하는 이유입니다 (위 그림에서 검은 점). 다각형()이이 시나리오에서 여전히 작동합니까? – cchau

+0

다각형이 정다각형 일 필요는 없습니다. 그것은 당신이 원하는만큼 불규칙적 일 수 있습니다. 나는 당신이 포인트들 사이의 연결을 원했고 당신은 이미 심볼로 성공했다고 생각했습니다. –

관련 문제