Python 根据系数列表计算互补CDF

Python 根据系数列表计算互补CDF,python,numpy,scipy,networkx,Python,Numpy,Scipy,Networkx,我从NetworkX获得了图中节点的聚类系数列表: coefficients = nx.clustering(G) 现在,我想绘制这些系数的互补CDF,这样在X轴上我就有了系数值X,在Y轴上,聚类系数大于或等于X的节点部分,即p(X>=X) 如何在Python中实现这一点?我应该使用scipy.stats.rv\u discrete.cdf 使用scipy.stats.rv_discrete.cdf似乎有些过分。只需对系数列表进行排序并绘制它们与范围[1,0]的对比图,就可以得到所需的互补CD

我从NetworkX获得了图中节点的聚类系数列表:

coefficients = nx.clustering(G)
现在,我想绘制这些系数的互补CDF,这样在X轴上我就有了系数值
X
,在Y轴上,聚类系数大于或等于X的节点部分,即
p(X>=X)


如何在Python中实现这一点?我应该使用
scipy.stats.rv\u discrete.cdf

使用
scipy.stats.rv_discrete.cdf
似乎有些过分。只需对系数列表进行排序并绘制它们与范围
[1,0]
的对比图,就可以得到所需的互补CDF

下面是一些示例代码,显示了不同随机图的互补CDF:

将networkx导入为nx
将numpy作为np导入
从matplotlib导入pyplot作为plt
从matplotlib.ticker导入百分比格式化程序
对于范围内的边(2002002001200):
G=nx.gnm_随机图(100,边)
系数=nx.聚类(G)
x=np.concatenate([[0],np.sort(list(coverties.values()),[1]]))
plt.plot(x,np.linspace(1,0,len(x)),label=f'100个节点,{edges}edges')
plt.xlabel(‘聚类系数’)
plt.ylabel('P(X≥ x) ")
利润率(x=0.02)
plt.gca().yaxis.set_major_格式化程序(百分比格式化程序(1))
plt.图例(title='Random graphs')
plt.紧_布局()
plt.show()

使用
np.linspace(0,1,len(x))
您将得到
p(x)≤ x)