每个分箱中数据的“标签分数”的2D直方图颜色

时间:2019-01-09 10:35:49

标签: python matplotlib scipy histogram binning

下面是在此找到的帖子:2D histogram coloured by standard deviation in each bin

我想用标签值低于Python特定阈值的点的分数为2D网格中的每个bin着色。

请注意,在此数据集中,每个点的连续标签值介于0-1之间。

例如,这是我制作的直方图,其中颜色表示每个仓中所有点的标签值的标准偏差:

enter image description here

此操作的方法是使用

=IIF(Sum(Fields!AugustValue.Value, "GrossProfitDataSet")-1>0 AND Sum(Fields!AugustValue.Value, "GrossSalesDataSet")-1>0,ROUND(((Sum(Fields!AugustValue.Value, "GrossProfitDataSet")-1)/(Sum(Fields!AugustValue.Value, "GrossSalesDataSet")-1))*100,2) & "%","0.00")

(请参阅:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binned_statistic_2d.html

..并将统计参数设置为“ std”

但是有没有办法改变这种图,以使颜色代表每个容器中点的分数,例如标签值低于0.5?

唯一的方法可能是明确定义某种网格并计算分数,但是我不确定这样做的最佳方法,因此,对此问题的任何帮助将不胜感激!

也许使用scipy.stats.binned_statistic_2d或numpy.histogram2d并能够将每个bin中的原始数据值作为多维数组返回,将有助于快速明确地计算分数。

1 个答案:

答案 0 :(得分:3)

低于阈值的数组中的元素比例可以计算为

fraction = lambda a, threshold: len(a[a<threshold])/len(a)

因此您可以致电

scipy.stats.binned_statistic_2d(x, y, values, statistic=lambda a: fraction(a, 0.5))