我试着在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()
2条答案
按热度按时间57hvy0tb1#
您需要规范化cdf值。
cdf = np.cumsum(counts)
在您的情况下会产生0-0.12之间的值。要将其规范化,您必须将该行替换为以下内容: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)
代替lmvvr0a82#
默认情况下,此库使用接收值的最大值,您需要强制设置最大值。请尝试使用
ylim
. documentation