繁体   English   中英

同一图上的多度分布

[英]Multiple degree distribution on the same plot

我使用以下代码生成了500个随机两方网络。 我想在单个图上绘制这些网络中至少10个网络的度分布(带有幂律线的对数-对数图),以可视方式将它们与我的无标度网络的对数-对数图进行比较。 我知道如何一次绘制单个网络的度分布,但是在同一张图上的多个图变得难以捉摸。 同样,如果可能的话,我还可以使用具有皮尔逊相关系数和所有500个网络的斜率值的Excel工作表。

set.seed(1)
    gs1 <- list()
    for (x in seq_len(500L)) 
    {
      gs1[[x]] <- sample_bipartite(358, 27, type = "gnm",m = 827, directed = TRUE)
    }

编辑:我正在寻找具有度数分布的幂律线。

任何帮助表示赞赏。 谢谢大家

认为我正在制作您要寻找的情节。 如果没有,请说明其不同之处。

您可以绘制第一个分布,然后使用lines将其添加。 由于每个分布具有不同的度数,因此我会遍历所有度数以找到上限。

library(igraph)

## Reproduce your data, paramterizing the number of graphs
NumG = 500L
set.seed(1)
gs1 <- list()
for (x in seq_len(NumG)) {
      gs1[[x]] <- sample_bipartite(358, 27, type = "gnm",m = 827, directed = TRUE)
}

## Find upper limit on degrees
MaxDeg = rep(0,NumG)
for(i in 1:NumG) {
    DD = degree_distribution(gs1[[i]])
    MaxDeg[i] = length(DD)
}
MaxMax = max(MaxDeg)

## Plot first distribution
plot(1:MaxDeg[1], degree_distribution(gs1[[1]]), 
    xlim=c(1,MaxMax), log="xy", type="l",
    xlab="Log-Degree", ylab="LogFrequency")

## Plot all the rest
for(i in 2:NumG) {
    lines(1:MaxDeg[i], degree_distribution(gs1[[i]]), col=rainbow(NumG)[i])
}

学位分布

您可以看到两种类型的节点的两部分。 总体而言,这些似乎很一致。

添加一点细节

有两种不同类型的节点。 从您的生成语句

gs1[[x]] <- sample_bipartite(358, 27, type = "gnm",m = 827, directed = TRUE)

有358个节点只有链接离开它们(源)。 还有27个没有链接的节点(接收器)。 这是列表中第一个图形gs1 [ 1 ]的图。

LO = layout_as_bipartite(gs1[[1]])
plot(gs1[[1]], layout=LO, vertex.size=8, 
    edge.arrow.size=0.3, vertex.label=NA)

图1

源在顶部,水槽在底部。 两种类型的节点具有完全不同的度数分布。 通过构造,您的所有图形都有827个链接。 这些离开了358个源,并进入了27个接收器。 平均而言,每个来源将具有827/358 = 2.31链接。 平均而言,接收器将具有858/27 = 30.63个链接。 在上面的度数分布图中很容易看到这两个不同的分布。

在我看来,度数分布并不遵循幂定律,既不将源和汇放在一起,也不将其单独收集。 我不确定要计算什么相关系数。 因此,在这些主题上,我没有任何帮助。

暂无
暂无

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

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