使用 networkx 和 numpy 绘制累积分布

Plot cumulative distribution with networkx and numpy

我想实现图形的累积分布。这是我的代码:

g = nx.read_edgelist('graph', create_using= nx.Graph(), nodetype=int)
degree_sequence = sorted([d for n, d in g.degree()], reverse=True)  # degree sequence
degreeCount = collections.Counter(degree_sequence)
deg, cnt = zip(*degreeCount.items())
cs = np.cumsum(deg)
plt.loglog(deg, cs, 'bo')
plt.title("Cumulative Distribution plot")
plt.ylabel("Sample with value > Degree")
plt.xlabel("Degree")
plt.show()

要绘制累积曲线,我知道我必须在 x 轴上有度数,在 y 轴上有值 > 度数的样本。使用我的代码的结果如下:

但是预期的结果一定是这样的:

我不确定使用我的代码是否得到了预期的情节。谁能帮我解释一下是否有问题?

我认为应该是:

cs = np.cumsum(cnt)

完整代码:

g = nx.read_edgelist('graph', create_using= nx.Graph(), nodetype=int)
degree_sequence = sorted([d for n, d in g.degree()], reverse=True)  # degree sequence
degreeCount = collections.Counter(degree_sequence)
deg, cnt = zip(*degreeCount.items())
cs = np.cumsum(cnt)
plt.loglog(deg, cs, 'bo')
plt.title("Cumulative Distribution plot")
plt.ylabel("Sample with value > Degree")
plt.xlabel("Degree")
plt.show()

通常在实现累积度数分布时,您希望计数的总数达到给定度数,P(K