【问题标题】:using igraph to plot asymmetric ties使用 igraph 绘制不对称关系
【发布时间】:2019-02-16 12:37:42
【问题描述】:

HAVE主角(第一列中的 ID)和 辅助演员(列名中的 ID)的双模邻接矩阵。

    f1  f2  f3  f4  f5  f6  f7
f1  0   1   0   2   5   0   6
f2  0   0   3   0   0   6   0
f3  9   4   0   1   0   0   0

矩阵中的数字是电影计数。矩阵是不对称的。例如,f2 在 f3 担任配角 3 次的电影中担任主角,但 f3 在 f2 支持 4 次的电影中担任主角。

我需要生成一个有向图,其中箭头从演员到支持者 - 箭头/弧的大小需要与 films 的数量成正比。 f2-f3 dyad的模型见下文:

图表的两种“模式”中相同的命名约定显然会导致问题。如果您有任何明确的解决方案,或者我没有很好地提出我的问题,请告诉我(我是 igraph 和双模投影的新手)。谢谢!

【问题讨论】:

    标签: r igraph data-manipulation adjacency-matrix sna


    【解决方案1】:

    如果你查看帮助页面help(igraph.plotting),你会发现它说:

    箭头大小

    箭头的大小。目前这是一个常数,所以它 每条边都是一样的。

    所以我认为通过箭头的大小是不可能做到这一点的。但是,当然可以使用参数edge.width 来改变箭头的线宽。

    由于您没有提供任何数据,因此我提供了一个小示例,我认为您应该能够与您的问题相匹配。

    样本数据

    CoStar = matrix(c(0,1,3,1, 3,0,3,1, 2,1,0,0, 0,1,1,0), nrow=4)
    CoStar
         [,1] [,2] [,3] [,4]
    [1,]    0    3    2    0
    [2,]    1    0    1    1
    [3,]    3    3    0    1
    [4,]    1    1    0    0
    

    现在我们可以把它变成一个图形对象,并使用权重作为边缘宽度来显示它。您需要使用edge.curved 参数,以便边缘 A->B 不在边缘 B->A 的顶部。

    library(igraph)
    G = graph_from_adjacency_matrix(CoStar, weighted=TRUE)
    V(G)$label = c("Steve", "Sean", "Andy", "Tim")
    plot(G, edge.width=E(G)$weight+1, edge.arrow.size=1.5, edge.curved=0.25)
    

    您可以看到边缘大小与权重(关节出现次数)成正比。

    【讨论】:

    • 这太棒了!非常感谢 - 抱歉,我没有包含我的数据。我已将其添加以供参考,以防其他用户发现它有用。
    猜你喜欢
    • 2015-10-05
    • 2020-07-15
    • 2014-03-25
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多