2017-05-17 23 views
0

我寫了下面的代碼,它需要節點(x,y座標)和二次鄰接矩陣(邊)的矩陣並繪製網絡虛擬化圖。如何僅使用預安裝的圖形包增加網絡虛擬圖中的邊緣寬度?

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

您需要使用LWD(見'lines'的幫助)你叫什麼這裏的頻率是多少? – cmbarbu

+0

是的,我不太清楚如何正確表達它。基本上,如果圖上兩點之間存在較高的鄰接/出現,我希望邊緣(箭頭線)的寬度增加,以便可視化出現的最高點。 –

+0

好吧,現在你修改ajacency也有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