Matplotlib 直方图对齐

3
def vs_time(data): #MUBASHWER, histogram
    clf()
    hist(data.keys(), bins = 12, weights = data.values())
    xticks(arange(0,24,2))
    xlabel('Time')
    ylabel('Number of fatalities')
    title('Number of Fatalities vs Time')
    webshow('vs_time.png')

直方图:在这里输入图片描述

我希望x轴上的小时数位于每个条形图的左边缘,但它们既不在中心位置,也不在任何边缘位置。请帮忙解决。如果能够在不改变轴的情况下移动直方图,那么这个问题就可以得到解决。

1个回答

4
这是因为你得到的直方图的箱边不仅仅是偶数0、2、4……22。
要获得所需的结果,只需使用bins=参数,例如:
plt.hist(YOUR_DATA,bins=arange(0,24,2)) #for bin edge 0,2,4...,22, as in your figure.

谢谢,它有效。如果可以的话,您能否解释一下为什么会这样? - user3623449
当您不指定“bins”时,边缘将自动确定;当您通过“int”指定“bins”时,边缘将根据数据分布确定。无论哪种情况,都不能保证边缘会恰好落在您想要的确切值上。因此,最直接的方法是将“bins”指定为包含边缘的“array”。 - CT Zhu
谢谢!我现在明白了。 - user3623449

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接