Python / matplotlib在直方图中显示置信度

时间:2011-06-01 16:02:20

标签: python numpy histogram matplotlib confidence-interval

这是我的问题。我有一些数据用于获取“数字化”pdf,这很好。 现在,我想找到一种方法,通过不同地对bin组着色来指示不同的置信区间。 特别是,从包含我想要找到的最高计数的bin开始并着色,比如红色,所有最高的区域,其面积总和小于.6。然后,总是通过减少计数来挑选新的箱子,我想要将我的红色区域增加到橙色的.8的箱子上色。 我正在考虑使用numpy来获取垃圾箱和计数,将它们分为3个系列(红色,橙色和原始颜色)并用pyplot的条形图。 希望你能指出更快的方式,谢谢!

1 个答案:

答案 0 :(得分:6)

如果我理解你的问题,我认为下面的代码会按照你的建议行事。它似乎与您考虑的方法略有不同,我不确定它是否更有效。无论如何,通常有助于看到别人做某事的方式。它假设已经生成了pdf(直方图),其中包含由变量“bin”表示的bin和由变量“binwidth”表示的bin宽度。

gray = (.5,.5,.5)
orange = (1.0, 0.647, 0.0)
red = (1.0, 0.0, 0.0)

clrs = [gray for xx in bins]

idxs = pdf.argsort()
idxs = idxs[::-1]
oranges = idxs[(cumsum(pdf[idxs])*binwidth < 0.8).nonzero()]
reds = idxs[(cumsum(pdf[idxs])*binwidth < 0.6).nonzero()]

for idx in oranges:
    clrs[idx] = orange

for idx in reds:
    clrs[idx] = red

bar(left=bins,height=pdf,width=binwidth,color=clrs)

Here is a view of the result that I get along with the associated PDF and CDF