突出显示图表的最短路径

时间:2013-11-07 02:54:05

标签: r shortest-path igraph

我正试图找到一种方法来突出显示我图表上的一些最短路径。 我试图自动使用get.shortest.paths的输出到E()的path =函数,但数据结构似乎是错误的。见下文:

###################################################################
g <- graph.ring(10,directed=TRUE)               
plot(g)
ShortPth <- get.shortest.paths(g, 8, 2)    # List of path 8->2
ShortPth
E(g)$color <- "SkyBlue2"
E(g)$width <- 1
E(g, path=ShortPth)$color <- "red" 

### setting edges by path= is failing !!!!!!!!!!
plot(g)
################################################## ###########

任何帮助都将非常感谢....

2 个答案:

答案 0 :(得分:8)

我想你错过了几个括号。 path参数需要一个数字向量,但ShortPth是一个列表。因此,您可以通过键入ShortPth[[1]]来提供向量 请尝试以下方法:

E(g, path=ShortPth[[1]])$color <- "red"
plot(g)

更新

正如jcarlos在评论中所指出的,上述解决方案在igraph_1.0.1时抛出错误:

  

as.igraph.vs(graph,path)中的错误:( list)对象不能   被强制输入'double'

文档说path参数应该是A list of vertices, to select edges along a path.但是传入列表会引发错误。目前正在使用igraph_1.0.1

执行以下任何操作
E(g, path=ShortPth$vpath[[1]])$color <- "red"
E(g, path=unlist(ShortPth$vpath))$color <- "red"
E(g, path=unlist(ShortPth[[1]]))$color <- "red"

ShortPth$vpath[[1]]  # class "igraph.vs"
# + 5/10 vertices:
# [1]  8  9 10  1  2
unlist(ShortPth$vpath)
# [1]  8  9 10  1  2

答案 1 :(得分:0)

使用函数ShortestPathFunction [],您也可以使用mathematica轻松完成此操作。