如何使直方图的柱子宽度相同

3
我有一点困难在直方图的操作上。我有一个包含两列的数据框,并将它们绘制成堆积直方图。我将它们放入特定的箱子(见下面的代码),但我想在最后创建一个大箱子(4000-10000)。然而,默认情况下,大箱子的列宽非常大.. 有没有办法使这个大箱子不会更大?让所有列的宽度相同,即使它们的x范围不均匀?
代码:
df.plot.hist(stacked=True, bins=[0,400,800,1200,1600,2000,2400,2800,3200,3600,4000,10000],normed= True)

在此输入图片描述

谢谢!!!

编辑:

根据建议,尝试提供一个示例数据集。粗糙但或许它能帮助说明问题..

df = pd.DataFrame(np.random.randint(0,4000,size=(100, 2)), columns=['A','B'])
df['A'].loc[85:89] = np.random.randint(5000,10000, size=5)
df.plot.hist(stacked=True, bins=[0,400,800,1200,1600,2000,2400,2800,3200,3600,4000,10000],normed= True)

最好创建一个简单的工作示例,以便每个人都可以运行它并查看问题。 - furas
我认为这个问题是关于如何缩放x轴,使得所有的条柱宽度相等?否则它就不是一个直方图。 - godaygo
好的,我应该提到我想把最后一个标签改为“4000-10000”。谢谢! - kcm2174
1个回答

1
使所有的箱子大小相同,然后将您的数据剪切到最后一个箱子的右端。
df = pd.DataFrame(np.random.randint(0,4000,size=(100, 2)), columns=['A','B'])
df['A'].loc[85:89] = np.random.randint(5000,10000, size=5)
bins = [0,400,800,1200,1600,2000,2400,2800,3200,3600,4000,4400]
df.clip(upper=4400).plot.hist(stacked=True, bins=bins, normed=True)

histogram

请注意,正如评论中指出的那样,这并不是真正的直方图。您可能希望自定义标签以反映最后一个箱子实际上比看起来要大。


这个很好用,谢谢!你说得对,我应该提到我计划把最后一个标签设为“4000-10000”。 - kcm2174

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