matplotlib hist中的绘图特定概率

matplotlib hist中的绘图特定概率,matplotlib,histogram,Matplotlib,Histogram,假设我有250个值,显示从0公里到10公里的云高。这些值分为三类:类别1包含40个值,类别2包含120个值,类别3包含90个值。因此,我绘制了三个柱状图,其中箱=[0,1,2,3,4,5,6,7,8,9,10],其中y轴显示值的频率,即在类别1的箱“3”中有10个值。 这是我的问题,我不想让y轴显示频率,而是总数值250的概率。我希望概率这个词在这里是正确的。。。实际上,我不想让柱状图显示,在类别1中,bin“3”中有10个值,我想让柱状图显示,bin“3”中有10/250个值,占所有值的4%

假设我有250个值,显示从0公里到10公里的云高。这些值分为三类:类别1包含40个值,类别2包含120个值,类别3包含90个值。因此,我绘制了三个柱状图,其中箱=[0,1,2,3,4,5,6,7,8,9,10],其中y轴显示值的频率,即在类别1的箱“3”中有10个值。 这是我的问题,我不想让y轴显示频率,而是总数值250的概率。我希望概率这个词在这里是正确的。。。实际上,我不想让柱状图显示,在类别1中,bin“3”中有10个值,我想让柱状图显示,bin“3”中有10/250个值,占所有值的4%


我希望你能理解我的问题,并能帮助我。我现在不能显示我的部分代码,因为我没有它…希望你能帮助我。塔克斯

我将使用Numpy的直方图函数,并通过将直方图除以所有三个类别的总人口来对数据进行规格化。可以使用matplotlib.bar()打印结果

我不认为有一种直接绘制直方图的方法。如果将normed=True传递给matplotlibs直方图函数,则权重将标准化为等于1,因此不能用于传递整个直方图的“相对权重”

from matplotlib.ticker import FuncFormatter

def myfunc(x, pos=0):
    return '%1.1f%%' % (x*100)

cat1 = np.random.randint(0,11,40)
cat2 = np.random.randint(0,11,120)
cat3 = np.random.randint(0,11,90)

totalpop = float(cat1.size + cat2.size + cat3.size)


fig, axs = plt.subplots(3,1,figsize=(10,9))
fig.subplots_adjust(hspace=.3)

for n, cat in enumerate([cat1,cat2,cat3]):

    hist, bins = np.histogram(cat, bins=11, range=(0,11))
    axs[n].bar(bins[:-1], hist/ totalpop, align='center', facecolor='grey', alpha=0.5)
    axs[n].set_title('Category %i' % n)

    print 'Category %i:' % n, 'size: %i' % cat.size, 'relative size: %1.2f' % (cat.size / float(totalpop))


for ax in axs:
    ax.set_xticks(range(11))
    ax.set_xlim(-1,11)
    ax.yaxis.set_major_formatter(FuncFormatter(myfunc))

谢谢你的回答,我已经知道了,但据我所知,赋范参数仅赋范为特定直方图的总数,但我希望它赋范为所有三个直方图的总数,即所有三个类别。所以我可以对第一类的直方图进行规范化,但它的总数量是40个值,但总数量是250,这就是我想要的。没问题,也许我没有正确解释;-)。但非常感谢你的回答,这正是我想要的!现在我有另一个问题。因为我还想在条形图上画垂直线……如果我用“V线”来画垂直线,那么我会得到垂直线,但是条形图不再可见。你知道我如何在条形图中画一条垂直线吗,比如x=2.4?垂直线适合我。但也许你的最大y值太大了,以至于杆被挤压到底部轴。例如,尝试从“最小”和“最大”yticks设置“最小”和“最大y”值,如果这样做有效,您可能会找到更好的方法来设置“最大x”和“y”值(或在轴上设置“硬”设置_xlim()。如果您在绘制直方图后设置它,这对我很有用:axs[0].vlines(2.4,np.min(axs[0].get_-yticks()),np.max(axs[0].get_-yticks())谢谢!现在它起作用了,我认为它实际上是最大值的设置。