【问题标题】:How to create a graph from an adjacency matrix by also specifying nodes coordinates in igraph?如何通过在 igraph 中指定节点坐标来从邻接矩阵创建图形?
【发布时间】:2020-01-18 23:56:29
【问题描述】:

我有以下 R 代码:

library('igraph')

nodes <- c('a','b','c','d')
x <- c(0,1,2,3)
y <- c(0,1,2,3)

from <- c('a','b','c')
to <- c('b','c','d')

NodeList <- data.frame(nodes, x ,y)
EdgeList <- data.frame(from, to)

plot(graph_from_data_frame(vertices = NodeList, d= EdgeList, directed = FALSE))

它会发出我想要的图表。但是我需要能够使用邻接矩阵而不是 fromto 向量。函数graph_from_adjacency_matrix 不包含指定节点坐标的参数。如何做到这一点?

【问题讨论】:

  • 使用graph_from_adjacency_matrix加载到图中,然后设置顶点属性; vertex_attr
  • ... 但如果这仅用于绘图,那么您可以使用 layout 参数; plot(g, layout=as.matrix(NodeList[-1])

标签: r igraph


【解决方案1】:

[正如上面提到的@user20650],你可以指定后面的顶点坐标,使用vertex_attr()

library('igraph')

adjm <- matrix(
  c(0, rep(c(1, 0, 0, 0, 0), times = 3)), 4, , F, list(letters[1:4], letters[1:4])
  )

g01 <- graph_from_adjacency_matrix(adjm, 'undirected') -> g02

vertex_attr(g02, name = 'x') <- c(0, 0, 1, 1)
vertex_attr(g02, name = 'y') <- c(0, 1, 1, 0)

par(mfrow = 1:2)

plot(g01)
plot(g02)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多