【问题标题】:Node order in bipartite igraph二分igraph中的节点顺序
【发布时间】:2019-03-22 06:33:54
【问题描述】:

我有以下邻接矩阵“dat”:

dat <- read.table(text = '     TZ1   TZ2   TZ3   TZ4
  RSP1 0.456 0.232 0.234 0.000
  RSN1 0.248 0.613 0.754 0.413
  RSP2 0.206 0.000 0.493 0.000
  RSN2 0.000 0.000 0.000 0.000
  RSP3 0.000 0.000 0.218 0.000
  RSN3 0.000 0.000 0.000 0.000
  RSP4 0.000 0.000 0.000 0.851
  RSN4 0.000 0.000 0.000 0.000' ) %>%
    as.matrix()

并使用下面的代码来制作二分体

g<-graph_from_incidence_matrix(dat, directed = TRUE, mode = "out", multiple = FALSE, weighted = T, add.names = NULL)
V(g)$color <- ifelse(V(g)$type, "lightblue", "salmon")
V(g)$shape <- ifelse(V(g)$type, "square","circle")
V(g)$frame.color <-  "gray" 
V(g)$size <- 18
E(g)$color <- "blue"
plot.igraph(g, edge.width=E(g)$weight*5, layout=layout.bipartite,edge.arrow.size=0.5,
 vertex.label.cex = 0.8, vertex.label.color = "black", vertex.shape=V(g)$shape, vertex.size=degree(g)*5)

但是节点的顺序不是按照下面的

RSP1    RSN1    RSP2    RSN2    RSP3    RSN3    RSP4    RSN4

TZ1   TZ2   TZ3   TZ4

我们如何制作具有上述节点顺序的图形?

【问题讨论】:

    标签: r igraph bipartite


    【解决方案1】:

    所以igraphlayout.bipartite 中的很多布局功能都包括在内,专注于最小化边缘交叉:

    布局是通过首先将顶点放置在两行中创建的, 根据他们的类型。然后行内的位置是 优化以最小化边缘交叉,

    如果要控制节点位置,则必须通过在列和行中创建具有 xy 位置的矩阵来进行自定义布局与 V(g) 的顺序相同。 purrr 可以帮到你:

    Rs <- V(g)$name[grepl('^R', V(g)$name)] %>%
      purrr::imap(function(x, i){
        c(i, 2)
      }) %>%
      do.call(rbind, .)
    
    Ts <- V(g)$name[grepl('^T', V(g)$name)] %>%
      purrr::map2(3:6, function(x, i){
        c(i, 1)
      }) %>%
      do.call(rbind, .)
    
    l <- rbind(Rs, Ts)
    

    这会给你一个矩阵:

          [,1] [,2]
     [1,]    1    2
     [2,]    2    2
     [3,]    3    2
     [4,]    4    2
     [5,]    5    2
     [6,]    6    2
     [7,]    7    2
     [8,]    8    2
     [9,]    3    1
    [10,]    4    1
    [11,]    5    1
    [12,]    6    1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多