Python/matplotlib直方图中显示置信水平

3
这是我的问题。我有一些数据,我将其分组以获得“数字化”pdf文件,这很好。现在,我想找到一种方法通过以不同的颜色为分组来指示不同的置信区间。特别地,从包含最高计数的bin开始,我想找到并着色所有面积总和小于0.6的最高bin,例如红色。然后,总是选择新的bin(按计数递减),我想用橙色着色增加我的红色面积到0.8的bin。我正在考虑使用numpy获取bin和计数,将它们排序成3个系列(红色、橙色和原始颜色)并用pyplot的条形图绘制它们。希望你能指出更快的方法,谢谢!

不,我只是在考虑这样做,但我还在思考可能更有效的方法。我想避免将我的值排序成3个不同的列表:S - purpleshift
1个回答

6
如果我理解你的问题正确,我认为下面的代码将实现你所建议的功能。它似乎与你考虑的方法有些不同,我不确定它是否更有效。无论如何,看到别人如何做某事通常会有所帮助。它假设已经生成了一个包含变量“bins”表示的直方图,并且bin宽度由变量“binwidth”表示。
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


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