簡體   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