首页 > 解决方案 > 可视化复用网络

问题描述

如何将其可视化为多路复用网络?它目前将边缘读取为节点,我不确定如何根据权重(即 1、2、3)添加边缘颜色。

mat <- read.table(header=FALSE, 
                text=" 
-   -   2   -   2   1   1   1   1   1   1   1   2   1   1   -
-   -   -   -   -   1   2   1   1   1   1   1   2   1   1   -
2   -   -   -   2   2   1   1   1   1   1   1   2   1   1   1
-   -   -   -   -   1   2   1   1   1   1   1   2   1   3   -
2   -   2   -   -   -   1   -   1   1   1   1   2   1   1   1
1   1   2   1   -   -   -   -   -   -   -   2   1   2   2   2
1   2   1   2   1   -   -   -   -   -   -   1   2   1   -   2
1   1   1   1   -   -   -   -   -   -   -   -   -   -   -   2
1   1   1   1   1   -   -   -   -   -   -   -   -   -   -   2
1   1   1   1   1   -   -   -   -   -   -   -   -   -   -   2
1   1   1   1   1   -   -   -   -   -   -   -   -   -   2   2
1   1   1   1   1   2   1   -   -   -   -   -   -   -   -   2
2   2   2   3   2   1   2   -   -   -   -   -   -   -   -   1
1   1   1   1   1   2   1   -   -   -   -   -   -   -   -   2
1   1   1   -   1   2   -   -   -   -   2   -   -   -   -   2
-   -   1   -   1   2   2   2   2   2   2   2   1   2   2   -
")   

g <- graph_from_data_frame(mat, directed=FALSE)

plot(g)

标签: rmatrixvisualizationigraph

解决方案


我认为您打算将上面提供的表格作为邻接矩阵。read.table 会给你一个 data.frame,而不是一个矩阵,所以你需要使用as.matrix. 此外,如果您将破折号放入矩阵中,整个内容将被解释为字符,而不是数字。因此,我将您的破折号更改为零,然后用于graph_from_adjacency_matrix获取图表。plot您可以通过指定 edge.color 参数来设置边缘颜色。

library(igraph)

mat <- read.table(header=FALSE, 
         text=" 0   0   2   0   2   1   1   1   1   1   1   1   2   1   1   0
0   0   0   0   0   1   2   1   1   1   1   1   2   1   1   0
2   0   0   0   2   2   1   1   1   1   1   1   2   1   1   1
0   0   0   0   0   1   2   1   1   1   1   1   2   1   3   0
2   0   2   0   0   0   1   0   1   1   1   1   2   1   1   1
1   1   2   1   0   0   0   0   0   0   0   2   1   2   2   2
1   2   1   2   1   0   0   0   0   0   0   1   2   1   0   2
1   1   1   1   0   0   0   0   0   0   0   0   0   0   0   2
1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   2
1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   2
1   1   1   1   1   0   0   0   0   0   0   0   0   0   2   2
1   1   1   1   1   2   1   0   0   0   0   0   0   0   0   2
2   2   2   3   2   1   2   0   0   0   0   0   0   0   0   1
1   1   1   1   1   2   1   0   0   0   0   0   0   0   0   2
1   1   1   0   1   2   0   0   0   0   2   0   0   0   0   2
0   0   1   0   1   2   2   2   2   2   2   2   1   2   2   0") 
mat = as.matrix(mat)  

g <- graph_from_adjacency_matrix(mat, weighted=TRUE, mode="undirected")

plot(g, edge.color=E(g)$weight)

带有按重量着色的边缘的图形

我认为这就是你想要得到的,但如果不是,请试着更清楚地说出你希望得到什么。


推荐阅读