【问题标题】:highlight shortest path on plot of graph在图表上突出显示最短路径
【发布时间】:2013-11-07 02:54:05
【问题描述】:

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

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

【问题讨论】:

    标签: r shortest-path igraph


    【解决方案1】:

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

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

    更新:

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

    as.igraph.vs(graph, path) 中的错误:(列表)对象不能 强制输入'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
    

    【讨论】:

    • 对于列表,您需要[[ 来获取单个元素。 [ 创建子列表。
    • 在当前 igraph 版本中,我仅在寻址 vpath 列表 E(g, path=ShortPth$vpath[[1]])$color
    • @jcarlos 感谢您指出这一点。已编辑并进一步调查。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2014-08-07
      • 2018-06-25
      • 1970-01-01
      • 2014-02-19
      相关资源
      最近更新 更多