【发布时间】:2013-10-13 07:09:59
【问题描述】:
我想使用 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 从我预先计算的数据中生成直方图?
或者,如果只对预先分箱的条形图数据进行最简单的处理,是否有一种方便的方法可以将我的每项计数“汇总”到分箱计数中?
【问题讨论】:
-
附注:要将计数扩展到原始数据,您还可以使用
Counter类及其elements() 方法:from collections import Counterc = Counter(counted_data)data = list(c.elements())
标签: python matplotlib histogram