2017-05-17 1 views
0

ノード(x、y座標)と二次隣接行列(エッジ)の行列をとり、ネットワーク仮想化グラフをプロットする次のコードを記述しました。プリインストールされたGraphicsパッケージのみを使用して、ネットワーク仮想化プロットのエッジ幅を増やすにはどうすればよいですか?

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

はい、正しく表現する方法がわかりませんでした。基本的に、グラフ上の2つの点の間に高い隣接性/発生がある場合は、エッジ(矢印の線)の幅を広げて、最も高いものを視覚化します。 –

+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

関連する問題