我想使用 Matplotlib 绘制预先计算的数据的直方图。例如,假设我有原始数据
data = [1, 2, 2, 3, 4, 5, 5, 5, 5, 6, 10]
鉴于这些数据,我可以使用
pylab.hist(data, bins=[...])
绘制直方图。
在我的例子中,数据已经被预先计算并表示为字典:
counted_data = {1: 1, 2: 2, 3: 1, 4: 1, 5: 4, 6: 1, 10: 1}
理想情况下,我想将这个预先计算的数据传递给一个直方图函数,让我可以控制 bin 宽度、绘图范围等,就好像我已经将原始数据传递给它一样。作为一种解决方法,我将我的计数扩展到原始数据中:
data = list(chain.from_iterable(repeat(value, count)
for (value, count) in counted_data.iteritems()))
当 counted_data
包含数百万个数据点的计数时,这是低效的。
有没有更简单的方法来使用 Matplotlib 从我的预先计算的数据中生成直方图?
或者,如果最简单的方法是对预先分箱的数据进行条形图绘制,是否有一种方便的方法可以将我的每项计数“汇总”为分箱计数?
原文由 Josh Rosen 发布,翻译遵循 CC BY-SA 4.0 许可协议
我使用 pyplot.hist 的
weights
选项按每个键的值对每个键进行加权,生成我想要的直方图:pylab.hist(counted_data.keys(), weights=counted_data.values(), bins=range(50))
这让我可以依靠
hist
来重新装箱我的数据。