【问题标题】:How to create edge weight reflecting values in adjacency matrix in R?如何在R中的邻接矩阵中创建反映边缘权重的值?
【发布时间】:2021-04-05 17:00:50
【问题描述】:

假设我们有一个邻接矩阵,可能是这样的:

  A1 A2 A3
A1 0  1  0
A2 1  0  2
A3 0  2  0

每个数字反映了人与人之间的联系数量(人为 A1-A3)。

您将如何使用igraph 创建反映人与人之间联系数量的边权重?

我试过E(matrix)$weight <- degree(matrix),但我怀疑这在技术上不正确?相反,我只想让邻接矩阵中的值反映边缘权重。

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    您并不清楚您希望如何描绘重量。这会按边上的节点列出权重。

    g1 <- graph_from_adjacency_matrix(
      adjmatrix = matrix(c(0,1,0, 1,0,2, 0,2,0), 
                         nrow = 3, ncol = 3, byrow = T, 
                         dimnames = list(c("A1","A2","A3"), ("A1","A2","A3"))
                         ) # end matrix
      ) # end graph_from
    
    plot(g1, 
         edge.label = E(g1)$weight)    # plot with edge weights
    

    【讨论】:

      【解决方案2】:

      您可以尝试在graph_from_adjacency_matrix中启用weighted = TRUE,例如,

      g <- graph_from_adjacency_matrix(adjmat, "undirected", weighted = TRUE)
      plot(g, edge.width = E(g)$weight, edge.label = E(g)$weight)
      

      给了

      数据

      > dput(adjmat)
      structure(c(0, 1, 0, 1, 0, 2, 0, 2, 0), .Dim = c(3L, 3L), .Dimnames = list(
          c("A1", "A2", "A3"), c("A1", "A2", "A3")))
      

      【讨论】:

        猜你喜欢
        • 2017-08-06
        • 1970-01-01
        • 2020-04-04
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-10
        相关资源
        最近更新 更多