【发布时间】:2020-09-20 09:29:06
【问题描述】:
我正在使用 matplotlib 的 hist2d 函数来制作我拥有的数据的二维直方图,但是我无法解释结果。
这是我的情节:
这是使用以下行创建的:
hist = plt.hist2d(X, Y, (160,160), norm=mpl.colors.LogNorm(vmin=1, vmax=20))
这将返回 (160, 160) 的二维数组,以及 bin 边缘等。
在图中有一些值频率很高的箱(黄色箱)。我希望能够获得此直方图的结果并过滤掉具有低值的 bin,保留高 bin。但我希望会有 160*160 的值,但我只能找到 160 X 和 160 Y 的值。
我想做的基本上是从密度较小的数据中过滤掉密度较大的数据。如果这意味着将数据表示为单个值(bin),那没关系。
我是误解了函数还是没有正确访问数据结果?我也尝试过辣味,但结果似乎是相同或相似的格式。
【问题讨论】:
-
您为什么期望
160 x 160值?这不就是你的直方图吗? -
@QuangHoang 也许我误解了,但是对于每个 X 箱,x 轴上不应该有 160 个箱,然后 Y 轴上有 160 个箱吗?那么每个 Xbin 应该有 160 个 Ybin?
-
是的,这是您的原始直方图,即你绘制的图片。但是您不想只过滤高密度垃圾箱吗?
-
是的,我希望将直方图作为数组,以便在绘图后过滤结果。但是我只能找到 160 个 X 和 160 个 Y 的 bin,但完整的直方图不应该有 25,600 个吗?
-
我不确定我是否关注了。你清楚地说明你得到一个
160 x 160数组。那是你我的直方图,不是吗?这些函数仅返回x和y的边,每个边为 161。如果这就是您所要求的,您可以对边缘进行叉积以获得 2D 箱。
标签: python matplotlib histogram histogram2d