繁体   English   中英

在 R 中使用 igraph 从数据帧添加边权重

[英]Adding edge weights from dataframe with igraph in R

我创建了一个图形对象

ig <- graph(df$ig)

并且希望能够根据网络矩阵绘制带有加权边的图

ig[]

ig[]没有加权,如何直接从网络矩阵添加权重,以便我可以使用E(ig)$weight访问它?

您可以像这样对图表进行加权:

示例: gg3 <- graph.ring(10)

 [1,] . 1 . . . . . . . 1
 [2,] 1 . 1 . . . . . . .
 [3,] . 1 . 1 . . . . . .
 [4,] . . 1 . 1 . . . . .
 [5,] . . . 1 . 1 . . . .
 [6,] . . . . 1 . 1 . . .
 [7,] . . . . . 1 . 1 . .
 [8,] . . . . . . 1 . 1 .
 [9,] . . . . . . . 1 . 1
[10,] 1 . . . . . . . 1 .

E(gg3)$weight <- 15

 [1,]  . 15  .  .  .  .  .  .  . 15
 [2,] 15  . 15  .  .  .  .  .  .  .
 [3,]  . 15  . 15  .  .  .  .  .  .
 [4,]  .  . 15  . 15  .  .  .  .  .
 [5,]  .  .  . 15  . 15  .  .  .  .
 [6,]  .  .  .  . 15  . 15  .  .  .
 [7,]  .  .  .  .  . 15  . 15  .  .
 [8,]  .  .  .  .  .  . 15  . 15  .
 [9,]  .  .  .  .  .  .  . 15  . 15
[10,] 15  .  .  .  .  .  .  . 15  .

或者

E(gg3)$weight <- c(20,10)

 [1,]  . 20  .  .  .  .  .  .  . 10
 [2,] 20  . 10  .  .  .  .  .  .  .
 [3,]  . 10  . 20  .  .  .  .  .  .
 [4,]  .  . 20  . 10  .  .  .  .  .
 [5,]  .  .  . 10  . 20  .  .  .  .
 [6,]  .  .  .  . 20  . 10  .  .  .
 [7,]  .  .  .  .  . 10  . 20  .  .
 [8,]  .  .  .  .  .  . 20  . 10  .
 [9,]  .  .  .  .  .  .  . 10  . 20
[10,] 10  .  .  .  .  .  .  . 20  .

看看这个:使用带有关联边值的边列表来创建一个加权网络

以下答案可能会有所帮助( [igraph] 在 g <- graph.data.frame? 中捕获边缘权重? ):

如果数据框中未明确给出权重,而您只想使用电子邮件交换的数量作为权重,则可以执行以下操作:

> df <- data.frame(from=c("a", "b", "a"), to=c("b", "a", "b"))
> g <- graph.data.frame(df)
> E(g)$weight <- 1
> g <- simplify(g, edge.attr.comb="sum")

然后我添加了以下行以便能够在图中绘制宽度。

 E(themes_graph)$width <-E(themes_graph)$weight/15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM