2

gplotの関数を使用して、ネットワーク グラフを作成しようとしていましたlibrary(sna)。グラフは、異なるフィールド間のリンクを表します。次のデータがあります。

MTM <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1)
FI <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
MCLI <- c(0,0,1,0,0,1,1,1,0,0,0,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1)
mat1 <- data.frame(MTM,FI,MCLI)
mat1 <- as.matrix(mat1)

ここで、「MTM」、「FI」、および「MCLI」は「関心のあるフィールド」であり、すべての行は、共通のフィールドの一部/いずれか/まったくない異なるプロジェクトです。これらのデータを次のように変換するにはどうすればよいでしょうか?

matx:   
       MTM   FI   MCLI
MTM     10    0   1
FI       0    1   1
MCLI    10    1   17

ネットワークグラフでフィールドを「ノード」として、接続を「エッジ」として表現することに興味があります。これは、最も「人気のある」相互接続されたフィールドを表すのに役立ちます。これらのデータで可能ですか?

前もって感謝します!

編集:私はこのソリューションに出くわしました。これは、私が望むものには問題ありません:

library(igraph)
G<-graph.incidence(as.matrix(mat1),weighted=TRUE,directed=FALSE)
summary(G)
plot(G)
4

1 に答える 1

2

これは、各ノードが「対象フィールド」であるデータからネットワーク グラフを作成する 1 つの方法です。元のデータから対称隣接行列を作成しましたが、これは目的の行列出力と完全には一致しないことに注意してください。

library(igraph)

# Use matrix multiplication to create symmetrical adjacency matrix.
adj_mat = t(mat1) %*% (mat1)

# Two ways to show edge weights.
png("igraphs.png", width=10, height=5, units="in", res=200)
par(mfrow=c(1, 2))

g1 = graph.adjacency(adj_mat, mode="undirected", diag=FALSE, weighted=TRUE)
plot(g1, edge.width=E(g1)$weight, vertex.size=50)

g2 = graph.adjacency(adj_mat, mode="undirected", diag=FALSE)
plot(g2, vertex.size=50)

dev.off()

ここに画像の説明を入力

于 2013-05-09T23:21:25.060 に答える