如何使用igraph绘制互连链接?

时间:2012-07-09 05:39:29

标签: r plot igraph

我有这些载体:

>dput(SHLRK03)
c("CHSLSCR01", "SHLRK04", "SHLRK05", "WLLWCR01", "WLLWCR02", 
"WNBGORV01", "WNBGORV02", "WNBGORV03", "WNBGORV04", "WNBGORV05", 
"WNBGORV06")
> dput(SHLRK04)
 "SHLRK05"
> dput(WNBGORV01)
 c("WLLWCR02", "WNBGORV02", "WNBGORV03", "WNBGORV04", "WNBGORV05", 
 "WNBGORV06")

我想通过以下方式获得一个连接图:

  1. 从SHLRK03指向向量中的值。
  2. 从SHLRK03内的SHLRK04到SHLRK04中的值值
  3. 从WNBGORV01到SHLRk04,再到WNBGORV01中的值
  4. 我还有几个相互连接的值。我试图在堆栈溢出和网络上搜索这种类型的图,但无法找到任何示例。

    有人可以帮我解决这个问题吗? 我感谢您的时间和精力。

1 个答案:

答案 0 :(得分:7)

这样做的一种方法是构建相应的adjacency matrix。例如,

vertices <- c("SHLRK03", unique(c(SHLRK03, SHLRK04, WNBGORV01)))
adj.mat <- matrix(0, nrow=length(vertices), ncol=length(vertices), 
                  dimnames=list(vertices, vertices))
adj.mat["SHLRK03", colnames(adj.mat) %in% SHLRK03] <- 1
adj.mat["SHLRK04", colnames(adj.mat) %in% SHLRK04] <- 1
adj.mat["WNBGORV01", colnames(adj.mat) %in% WNBGORV01] <- 1
library(igraph)
g <- graph.adjacency(adj.mat)
V(g)$label <- V(g)$name
plot(g)

您可以在在线文档中找到多种图形布局,顶点标注等选项。这是上面代码的默认渲染。

enter image description here

如果你有这样的几个向量,你当然可以通过一些辅助函数自动填充邻接矩阵。