使用matplotlib将累积线拟合到直方图

时间:2013-10-14 08:38:04

标签: python matplotlib histogram

我在下面创建了直方图:

sample histogram

并且想知道如果不是绘制整个图形(蓝色),我可以绘制上边缘(黑色)?

或只是拟合线以匹配分布的顶部?

我的代码是:

plt.hist(histogramData, bins=200, normed=True, cumulative=True, edgecolor='b', facecolor='None')

我尝试删除'edgecolor'和'facecolor',但它似乎不起作用......

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我认为pylabs直方图代码使用numpys np.histogram()函数,产生二进制数和计数;因此,如果您使用标准plot()命令一起使用它,那么您就完成了(只记得同时对np.cumsum()的累计外观计数np.histogram()

编辑: 关于评论,我引用了numpy.histogram() documentation

  

<强>返回

     

hist :array

     

直方图的值。有关可能的语义的描述,请参阅normed和weights。

     

bin edges :dtype float数组

     

返回bin边缘(length(hist)+1)。

因此,要以所需的方式绘制数据:

hist, bins = np.histogram(data, bins=200)
plt.plot( bins[:-1], np.cumsum(hist) )

或者如果您想更精确,您甚至可以将数据值放在bin中心:

offset = bins[1:]-bins[:-1]
plt.plot( bins[:-1]+offset, np.cumsum(hist) )