2017-05-17 3 views
0

나는 노드 매트릭스 (x, y 좌표)와 2 차 인접 매트릭스 (에지)를 취해 네트워크 가상화 그래프를 그린 다음 코드를 작성했다.미리 설치된 그래픽 패키지 만 사용하여 네트워크 가상화 플롯의 가장자리 폭을 늘리려면 어떻게해야합니까?

plotGraph <- function(){ 

    coordinates <- matrix(rexp(50), 10) 
    adjacency <- matrix(c(0,1,0,0,2,0,1,0,0,2,1,0,1,0,0,1,0,2,0,1,0,1,2,0,1,1,1,0,1,0), nrow=nrow(coordinates), ncol=nrow(coordinates)) 

    x11() 
    plot(coordinates, main="Network Visualisation", xlab="coordinates x", ylab="coordinates y", type="p") 

    pos <- which(adjacency>0, arr.ind = T) 

    max = ncol(adjacency) * nrow(adjacency) 

    for(i in 1:max){ 
     arrows(coordinates[pos[i,1],1], coordinates[pos[i,1],2], coordinates[pos[i,2],1], coordinates[pos[i,2],2], col="royalblue3", lwd=1) 
    } 
} 

plotGraph() 
그것은 은 어떻게 가장자리를 높일 수 있습니다, 사전 설치된 그래픽 패키지를 사용하여, 잘하지만 지금은 작동하는 것 같다

, 큰 인접성?

미리 제안 해 주셔서 감사합니다.

+0

을 당신은 당신이 여기 주파수를 호출 할 것 ('lines'의 도움말을 참조하십시오) LWD를 사용할 필요가? – cmbarbu

+0

예, 올바르게 표현하는 방법을 잘 모르겠습니다. 기본적으로 그래프의 두 점 사이에 더 높은 인접성/발생이있는 경우 가장자리 (화살표 선)의 폭을 늘려 가장 많이 나타나는 선을 시각화하고 싶습니다. –

+0

좋아요, 이제는 인접성을 수정하여 2를 더 잘 이해했습니다 – cmbarbu

답변

1

lwd (기능 lines 도움말 참조)를 사용하고 인접으로 설정해야합니다. 또한 점에서 그 자체로 선을 그려서는 안됩니다 (경고를 피하십시오). 다음은 당신이 필요로 할 것 :

coordinates <- matrix(rexp(50), 10) 
adjacency <- matrix(c(0,1,0,0,2,0,1,0,0,2,1,0,1,0,0,1,0,2,0,1,0,1,2,0,1,1,1,0,1,0), nrow=nrow(coordinates), ncol=nrow(coordinates)) 

plot(coordinates, main="Network Visualisation", xlab="coordinates x", ylab="coordinates y", type="p") 

pos <- which(adjacency>0, arr.ind = T) 

for(i in 1:dim(pos)[1]){ 
    if(pos[i,1]!=pos[i,2]){ 
     arrows(coordinates[pos[i,1],1], coordinates[pos[i,1],2], 
       coordinates[pos[i,2],1], coordinates[pos[i,2],2], 
       col="royalblue3", lwd=adjacency[pos[i,]]) 
    } 
} 

picture of network

+0

안녕하세요, 안타깝게도 ... 두께가 늘어나지 않아 줄의 강도가 커지거나 줄었습니다. 그래도 모든 오류를 제거했습니다. 감사합니다! :) –

+0

잘 내 그림에 않습니다 ... – cmbarbu

관련 문제