HAVE
是由主角演员(在第一列中标识)和支持者(列名称中的标识)组成的两种模式的邻接矩阵。
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支撑了四次。
我需要生成一个有向图,其中从参与者到支持者绘制箭头-箭头/弧的大小必须与films
的数量成比例。请参见下面的f2-f3 dyad模型:
在图的两个“模式”中相同的命名约定显然会引起问题。让我知道您是否有明确的解决方案,或者我问的不是很好(我是igraph和双模投影的新手)。谢谢!
答案 0 :(得分:2)
如果查看帮助页面help(igraph.plotting)
,您会发现它说:
arrow.size
箭头的大小。目前这是一个常数,所以它 每个边缘都是相同的。
因此,我认为不可能通过箭头的大小来完成此操作。但是,当然可以使用参数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)
您会看到边缘尺寸与权重(关节出现的数量)成正比。