3

我正在尝试找到一种方法来突出显示图表上的一些最短路径。我正在尝试将 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)
################################################# ###########

任何帮助将不胜感激....

4

2 回答 2

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. Passing in a list 会引发错误。以下任何一项目前正在使用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
于 2013-11-07T03:34:00.873 回答
0

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

于 2013-11-15T07:58:54.483 回答