首页
学习
活动
专区
圈层
工具
发布

三列图
EN

Stack Overflow用户
提问于 2014-06-26 22:14:24
回答 1查看 673关注 0票数 5

某些过程的结果是从A到C到B的路径列表,例如:

代码语言:javascript
复制
which.effect(A1,A2,10,1,1)
[[1]]
[1] 10  2  1

[[2]]
[1] 10 28  1

[[3]]
[1] 10  6  9

[[4]]
[1] 10 24  9

[[5]]
[1] 10 28  9

我想要的是一个有三个平行列的图,第一列是原点,第二列是中间点,第三列是目的地。在本例中,第一列只有节点10、第二个2, 6, 24, 28和第三个1, 9。然后,有向边(箭头)将从第一列中的节点到第二列中的节点,以及从第二列中的节点到第三列中的节点。

如果用igraph,这可能吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-26 23:10:25

不太确定这是否是你想要的,但也许会让你得到一些帮助。

其思想是首先从数据中形成一个边缘列表,然后创建一个邻接矩阵,然后再绘制。

代码语言:javascript
复制
library(igraph)
library(Rgraphviz)

# your data
lst <- list(c(10,2,1), c(10,28,1), c(10,6,9), c(10,24,9), c(10,28,9))

# create edge list (from in first column / to in the second)
d <- do.call(rbind, lst)
edges <- rbind(d[,1:2], d[,2:3])

# get adjacency matrix
g <- graph.data.frame(edges, directed=TRUE)
adj <- as.matrix(get.adjacency(g)) 

# convert to a graph object and plot
g2 <- new("graphAM", adjMat=adj, edgemode="directed")
plot(g2, attrs = list(graph = list(rankdir="LR"), 
                             node = list(fillcolor = "lightblue")))

rankdir="LR"从左到右绘制图

上面的图使用dot给出了严格的结构。

编辑

使用layout = layout.reingold.tilford获得使用igraph的树结构

代码语言:javascript
复制
E(g)$curved <- 0
plot.igraph(g, vertex.size=30, layout=layout.reingold.tilford)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24441094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档