python 问题CDF图

elcex8rz  于 2023-03-07  发布在  Python
关注(0)|答案(2)|浏览(215)

我试着在python中绘制一个CDF图,但是它应该显示从0到1的y值,它只显示到0.12...我不知道为什么...

def plot_cdf_differences(data):
    data['differences'] = data.apply(lambda e: abs(e.inner_distance_speed - e.inner_distance_lsq), axis=1)
    counts, bin_edges = np.histogram(data['differences'], bins=200, density=True)
    cdf = np.cumsum(counts)

    plt.plot(bin_edges[1:], cdf)
    plt.xlabel('Differences')
    plt.ylabel('CDF')
    plt.show()

Graph

57hvy0tb

57hvy0tb1#

您需要规范化cdf值。cdf = np.cumsum(counts)在您的情况下会产生0-0.12之间的值。要将其规范化,您必须将该行替换为以下内容:

counts, bin_edges = np.histogram(data['differences'], bins=200, density=False)
cdf = np.cumsum(counts/sum(counts))

np.cumsum(counts/sum(counts))现在正在0和1之间规范化您的值。实际公式如下所示:**x_norm =(x-np.min(x))/(np.max(x)-np.min(x))**但是由于使用了累积和和直方图,你可以简化它。
顺便说一句,如果你想你的值在百分比...那么你可以使用cdf = np.cumsum(counts/sum(counts)*100)代替

lmvvr0a8

lmvvr0a82#

默认情况下,此库使用接收值的最大值,您需要强制设置最大值。请尝试使用ylim . documentation

相关问题