【问题标题】:R reciprocal edges in igraph in RR中igraph中的R倒数边
【发布时间】:2011-08-08 08:47:42
【问题描述】:

我正在使用 R 中的图形。我目前正在使用 igraph,我希望能够绘制图形的双向边“互易边”。到目前为止,我已经看到可以绘制“双向”图​​,但不能绘制倒数边,例如:E(1,3) 和 E(3,1) 可能表示为双向边,但是相反,我想绘制两条平行边,一条指向另一条的相反方向|| . 在绘制“plot(rEG, recipEdges = "distinct")" 时,Rgraphviz 中有一个选项可以做到这一点,但我更喜欢 igraph 上的绘图。提前致谢。

【问题讨论】:

    标签: r graph nodes bidirectional igraph


    【解决方案1】:

    igraph中,你可以使用边缘属性curved来弯曲你想要的边缘。

    例如,这是一个基于图的小邻接矩阵:

    library("igraph")
    adj <- matrix(c(
        0,1,1,
        1,0,1,
        0,0,0),3,3,byrow=TRUE)
    
    library("igraph")
    G <- graph.adjacency(adj)
    

    节点 0 和 1 之间的边是双向的(实际上不是,它是两条边,它们看起来像双向边,因为它们是直的)。:

    plot(G)
    

    要改变这一点,我们可以使用 edgelist:

    E <- t(apply(get.edgelist(G),1,sort))
    
    E(G)$curved <- 0
    E(G)[duplicated(E) | duplicated(E,fromLast =TRUE)]$curved <- 0.2
    
    plot(G)
    

    另一个选项是我的包,这是默认行为:

    library("qgraph")
    qgraph(adj)
    

    可以使用bidirectional 参数抑制。

    【讨论】:

    • 非常感谢,我看到你甚至可以设置平行边之间的分隔,太棒了。
    【解决方案2】:

    试试plot(graph, edge.curved=TRUE)。它肯定适用于 igraph 0.6,也可能适用于 igraph 0.5.4(不确定何时添加)。

    【讨论】:

    • 这太棒了,我喜欢@sachaepskamp 的回答是你可以修改边之间的分离,这要归功于两者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多