python - 简单的肥尾对数分箱

标签 python numpy matplotlib networkx binning

我试图从 Plotting log-binned network degree distributions 中简化日志分级 输出显示原始分布和对数分箱分布。然而,后者并没有像预期的那样单调递减,与原来的偏差很大。 这个问题的最佳解决方案是什么?

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np

m = 3
N = 900

G = nx.barabasi_albert_graph(N, m)

degree_list=nx.degree(G).values()

kmin=min(degree_list)
kmax=max(degree_list)

bins=[float(k-0.5) for k in range(kmin,kmax+2,1)]
density, binedges = np.histogram(degree_list, bins=bins, density=True)
bins = np.delete(bins, -1)

logBins = np.logspace(np.log10(kmin), np.log10(kmax),num=20)
logBinDensity, binedges = np.histogram(degree_list, bins=logBins, density=True)
logBins = np.delete(logBins, -1)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xscale('log')
ax.set_yscale('log')

plt.plot(bins,density,'x',color='black')
plt.plot(logBins,logBinDensity,'x',color='blue')
plt.show()

最佳答案

噪声是由于 N 较小,而小值的偏移是由于 logbin 宽度小于 1。添加

for x in range(len(logBins)):
    logBins[x] = mt.ceil(logBins[x])

关于python - 简单的肥尾对数分箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21921185/

相关文章:

python - 从 0-d numpy 数组中恢复字典

python - 使用 Python 从 OODB 中读取不同大小的对象来管理内存

python - 使用 ffmpeg-python : [NULL @ 000002486ae7b180] Unable to find a suitable output format for 获取错误消息

python - Python 脚本的 Bash 别名——这可能吗?

python - 来自日期时间索引组循环的 Pandas 计算列

python - Python 中的高效二维边缘检测

python - 确保 matplotlib 颜色条在多个图形中看起来相同

python - 将 xtick 的日期时间显示为日

python - 在 Gtk 主循环中运行的异步调用

python - Matplotlib LocatableAxes xtick 标签