分布直方图中的加权柱形区间

7
我正在寻找一种绘制分布直方图的方法,其中y轴表示每个区间的总物品数量(而不仅仅是计数)。
以下是图表示例:
左边的图表中,有55个代理商售出了20-30套房子
右边的图表中,售出20-30套房子的代理商代表了售出的1100套房子

enter image description here

这并不像看起来那么简单,因为不能简单地将每个箱的计数乘以箱的值(也许在20-30箱中,有54个机构销售了21个,有1个机构销售了29个)。

问题:

  • 这种图表的名称是什么(右侧的图表)?
  • 是否有一种方法可以在matplotlibseaborn中本地绘制它?
2个回答

14
你想要使用 weights 关键词参数(请参阅 numpy 文档),它通过 ax.hist请参见)传递。

像这样:

fig, ax = plt.subplots()
ax.hist(num_sold, bins, weights=num_sold)

太棒了,谢谢你。那么,这个图表的名称是...加权直方图吗? - Jivan
第二个链接已经失效! - jtlz2
请注意,对于泊松二项式不确定性,您也需要扩大误差条。 - jtlz2

3

修改:最好使用 @tacaswell 的方法。但我的标签将不需要复杂操作即可正确排列,而且柱形图会被分隔开。

希望你的数据在 pandas 中。我将创建一些虚假数据,然后给你一个解决方案。

import pandas as pd

# create a dataframe of number of homes sold
df = pd.DataFrame(data={'sold':np.random.randint(0,100, 1000)})

# groupby the left side of interval [0, 10), [10, 20) etc..  and plot
df.groupby(df.sold // 10 * 10).sum().plot.bar()

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