【问题标题】:2 links instead of 2-way link in igraphigraph 中的 2 个链接而不是 2 向链接
【发布时间】:2022-01-26 11:02:47
【问题描述】:

我需要绘制一个具有定向连接的网络并将其保存到 SVG。我从这里举了个例子:https://www.r-graph-gallery.com/251-network-with-node-size-based-on-edges-number.html

这是我的数据示例:

library(igraph)

# create data:
links=data.frame(
    source=c("A","A", "A", "A", "A","J", "B", "B", "C", "C", "D","I"),
    target=c("B","B", "C", "D", "J","A","E", "F", "G", "H", "I","I")
)

# Turn it into igraph object
network <- graph_from_data_frame(d=links, directed=T) 

# Count the number of degree for each node:
deg <- degree(network, mode="all")

# Plot

svg("c:\\temp\\network01.svg", 
    width = 7, height = 7, pointsize = 12)

plot(network, vertex.size=30, vertex.color=rgb(0.1,0.7,0.8,0.5) , edge.arrow.size = 0.7)


dev.off()

结果图片:

除了这部分没关系:

我在这里所期望的 - 更大的链接线长度,2 个链接而不是 1 个 2 路链接。像这样的:

这可能吗?

顺便说一句。每次生成的图片都不一样。有时 A J 链接看起来更糟:

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    默认排列不好时可以手动指定布局。例如:

    layout = matrix(c(0,0, 0,1, 0,-1,  -1,0, 1,0, 2,0, -0.5,-2,
                      0.5,-2,  -2,-0.5, -2,0.5), byrow = T, ncol = 2)
    plot(network, vertex.size=30, vertex.color=rgb(0.1,0.7,0.8,0.5), 
         edge.arrow.size = 0.2, layout=layout)
    

    请注意,指定坐标的顺序必须与 igraph 对象中节点的顺序一致(您可以使用lapply(network, names) 查看)。

    或者,提供大量自动布局功能,您可以尝试找到自己喜欢的布局。 ?layout_with_fr 提供了可用布局功能的列表。例如:

    plot(network, vertex.size=30, vertex.color=rgb(0.1,0.7,0.8,0.5),
         edge.arrow.size = 0.2, 
         layout=layout_with_sugiyama(network)$layout)
    

    【讨论】:

    • 谢谢,我喜欢 layout_with_kk 之一,看起来不错。
    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2018-11-18
    • 2020-05-27
    相关资源
    最近更新 更多