具有对角线值的 R 基对称矩阵中的图形可视化
graph visualization in R basis symmetric matrix having values in diagonal
我有一个对称矩阵,我稍微修改了一下:
上面的矩阵是一个对称矩阵,除了我在对角线上也添加了值(将告诉未来的目的)
此矩阵表示一个人(A、B、C、D、E)在出版物上与其他人合作的次数。例如B和C一起工作了3次,同样A和E一起工作了4次。现在对角线值表示一个人单独工作的次数,例如B 完成了 4 个出版物(单独或与其他人一起),同样 C 完成了 3 个出版物。
现在我想用R做一个网络分析图,用边粗细和节点大小来描述不同人之间的关系。例如该图应如下所示:
在图表中,节点圆的大小取决于一个人从事的出版物数量,例如圆 B 最大,因为它的对角线值最大,而 A 和 E 最小,因为它们的对角线值最低。此外,节点之间的边缘厚度取决于它们一起工作的次数,例如A 和 E 之间的边缘厚度最大,因为它们一起工作了 4 次,而 B 和 C 之间的边缘厚度(小于 A 和 E 之间的边缘厚度)因为它们一起工作了 3 次。
我可以描述两个人的基本边缘厚度之间的关系,但是包含对角线值给我带来了问题。有可能在 R 中做到吗?任何线索将不胜感激
您可以使用 igraph
包来做到这一点。因为对角线的含义与矩阵中的其他条目不同,所以我将矩阵分成两部分,对角线和其余部分。
您的数据
SM = as.matrix(read.table(text="A B C D E
1 2 1 1 4
2 4 3 2 1
1 3 3 1 2
1 2 1 2 1
4 1 2 1 1",
header=TRUE))
rownames(SM) = colnames(SM)
library(igraph)
AM = SM
diag(AM) = 0
D = diag(SM)
g = graph_from_adjacency_matrix(AM,
mode = "undirected",
weighted = TRUE)
plot(g,
edge.width=E(g)$weight,
vertex.size = 10+3*D)
我有一个对称矩阵,我稍微修改了一下:
上面的矩阵是一个对称矩阵,除了我在对角线上也添加了值(将告诉未来的目的)
此矩阵表示一个人(A、B、C、D、E)在出版物上与其他人合作的次数。例如B和C一起工作了3次,同样A和E一起工作了4次。现在对角线值表示一个人单独工作的次数,例如B 完成了 4 个出版物(单独或与其他人一起),同样 C 完成了 3 个出版物。
现在我想用R做一个网络分析图,用边粗细和节点大小来描述不同人之间的关系。例如该图应如下所示:
在图表中,节点圆的大小取决于一个人从事的出版物数量,例如圆 B 最大,因为它的对角线值最大,而 A 和 E 最小,因为它们的对角线值最低。此外,节点之间的边缘厚度取决于它们一起工作的次数,例如A 和 E 之间的边缘厚度最大,因为它们一起工作了 4 次,而 B 和 C 之间的边缘厚度(小于 A 和 E 之间的边缘厚度)因为它们一起工作了 3 次。
我可以描述两个人的基本边缘厚度之间的关系,但是包含对角线值给我带来了问题。有可能在 R 中做到吗?任何线索将不胜感激
您可以使用 igraph
包来做到这一点。因为对角线的含义与矩阵中的其他条目不同,所以我将矩阵分成两部分,对角线和其余部分。
您的数据
SM = as.matrix(read.table(text="A B C D E
1 2 1 1 4
2 4 3 2 1
1 3 3 1 2
1 2 1 2 1
4 1 2 1 1",
header=TRUE))
rownames(SM) = colnames(SM)
library(igraph)
AM = SM
diag(AM) = 0
D = diag(SM)
g = graph_from_adjacency_matrix(AM,
mode = "undirected",
weighted = TRUE)
plot(g,
edge.width=E(g)$weight,
vertex.size = 10+3*D)