更改Python直方图bin中的计数

时间:2013-10-02 14:21:46

标签: python matplotlib histogram

我有一个Python直方图。

我想将直方图的峰值标准化为1,以便只有条形的相对高度很重要。

我看到一些这样做的方法涉及更改bin宽度,但我不想这样做。

我也意识到我可以更改y轴的标签,但我还有另一个图重叠,所以yticks必须是实际值。

是否无法访问和更改每个bin中的直方图“count”?

谢谢。

1 个答案:

答案 0 :(得分:3)

我认为你所追求的是直方图的标准化形式,其中y轴是密度而不是计数。如果您正在使用Numpy,请使用histogram function中的normed标记。

如果您希望直方图的峰值为1,那么您可以将每个bin中的计数除以最大bin值,即(建立SO MatPlotLib示例here):

#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

# Generate random data
mu, sigma = 200, 25
x = mu + sigma*np.random.randn(10000)

# Create the histogram and normalize the counts to 1
hist, bins = np.histogram(x, bins = 50)
max_val = max(hist)
hist = [ float(n)/max_val for n in hist]

# Plot the resulting histogram
center = (bins[:-1]+bins[1:])/2
width = 0.7*(bins[1]-bins[0])
plt.bar(center, hist, align = 'center', width = width)
plt.show()

enter image description here