编程之家收集整理的这篇文章主要介绍了python – 每个bin中具有相同点数的直方图,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个100分的排序矢量点.我现在想要创建两个直方图:第一个直方图应该有10个具有相等宽度的区间.第二个也应该有10个直方图,但不一定宽度相等.在第二个,我只想让直方图在每个bin中具有相同的点数.因此,例如,第一个条可能非常短而宽,而直方图中的第二个条可能非常高而窄.我有使用matplotlib创建第一个直方图的代码,但现在我不知道如何创建第二个直方图.
import matplotlib.pyplot as plt
points = [1,2,3,4,5,6,...,99]
n,bins,patches = plt.hist(points,10)
编辑:
尝试下面的解决方案,我有点困惑为什么我的直方图中的所有条形的高度是相同的.
解决方法
这个问题是
similar to one,我在一段时间之前写了一个答案,但是有足够的不同以保证它自己的问题.事实证明,解决方案使用了与我的其他答案基本相同的代码.
def histedges_equalN(x,nbin):
npt = len(x)
return np.interp(np.linspace(0,npt,nbin + 1),np.arange(npt),np.sort(x))
x = np.random.randn(100)
n,patches = plt.hist(x,histedges_equalN(x,10))
这个解决方案给出了一个具有相同高度区间的直方图,因为—根据定义—直方图是每个区间中点数的计数.
要获得pdf(即密度函数),请使用normed = True kwarg来plt.hist.如我的other answer所述.
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478