【问题标题】:How to make the width of histogram columns all the same如何使直方图列的宽度都相同
【发布时间】:2017-04-26 02:09:11
【问题描述】:

我在处理直方图时遇到了一些麻烦。我有一个包含两列的 df,我将它们绘制为堆叠直方图。我将它们放入特定的垃圾箱(参见下面的代码),但我想在最后制作一个大垃圾箱(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)

【问题讨论】:

  • 最好创建简单的工作示例,以便每个人都可以运行它并查看问题。
  • 我认为问题是关于如何缩放 x 轴,以便所有 bin 的宽度相等?否则将不是直方图。
  • 好点,我应该提到我想制作最后一个标签“4000-10000”。谢谢!

标签: python matplotlib histogram


【解决方案1】:

使所有 bin 大小相同,然后将数据剪辑到最后一个 bin 的右端。

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)

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

【讨论】:

  • 这很好用,谢谢!!你说得对,我应该提到我计划将最后一个标签设为“4000-10000”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 2022-12-05
  • 2013-11-10
相关资源
最近更新 更多