【发布时间】:2021-01-21 23:51:40
【问题描述】:
首先,我想说我对 R 完全陌生,我只是想完成这一项任务。 所以,我想做的是我想从加权矩阵创建一个网络图。我举了个例子:
CSV 是一个简单的相关矩阵,如下所示:
,A,B,C,D,E,F,G
A,1,0.9,0.64,0.43,0.38,0.33,0.33
B,0.9,1,0.64,0.33,0.43,0.38,0.38
C,0.64,0.64,1,0.59,0.69,0.64,0.64
D,0.43,0.33,0.59,1,0.28,0.23,0.28
E,0.38,0.43,0.69,0.28,1,0.95,0.9
F,0.33,0.38,0.64,0.23,0.95,1,0.9
G,0.33,0.38,0.64,0.28,0.9,0.9,1
为了更准确,我先画图,然后用尺子记下距离,计算出权重的公式并制作 CSV 表。
值越高,两点越接近。
但是,无论我做什么,我得到的最好结果是这样的:
这就是我试图完成它的方式,使用this 教程:
首先,我导入我的矩阵:
> matrix <- read.csv(file = 'test_dataset.csv')
但是在使用 head() 打印出矩阵之后,这已经以某种方式切断了矩阵的最后一行:
> head(matrix)
ï.. A B C D E F G
1 A 1.00 0.90 0.64 0.43 0.38 0.33 0.33
2 B 0.90 1.00 0.64 0.33 0.43 0.38 0.38
3 C 0.64 0.64 1.00 0.59 0.69 0.64 0.64
4 D 0.43 0.33 0.59 1.00 0.28 0.23 0.28
5 E 0.38 0.43 0.69 0.28 1.00 0.95 0.90
6 F 0.33 0.38 0.64 0.23 0.95 1.00 0.90
> dim(matrix)
[1] 7 8
然后我继续删除第一列,使矩阵再次成为正方形...
> matrix <- data.matrix(matrix)[,-1]
> head(matrix)
A B C D E F G
[1,] 1.00 0.90 0.64 0.43 0.38 0.33 0.33
[2,] 0.90 1.00 0.64 0.33 0.43 0.38 0.38
[3,] 0.64 0.64 1.00 0.59 0.69 0.64 0.64
[4,] 0.43 0.33 0.59 1.00 0.28 0.23 0.28
[5,] 0.38 0.43 0.69 0.28 1.00 0.95 0.90
[6,] 0.33 0.38 0.64 0.23 0.95 1.00 0.90
> dim(matrix)
[1] 7 7
然后我创建图表并尝试绘制它:
> network <- graph_from_adjacency_matrix(matrix, weighted=T, mode="undirected", diag=F)
> plot(network)
然后出现上面的结果……
所以,在花了最后几个小时在谷歌上搜索并尝试了更多的东西之后,这是我能到达的最接近的地方。
所以我请求你的帮助,非常感谢你!
【问题讨论】: