我正试图找到一种方法来突出显示我图表上的一些最短路径。 我试图自动使用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)
################################################## ###########
任何帮助都将非常感谢....
答案 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轻松完成此操作。