Return Julia 中二维直方图的 bin 中的频率

Return the frequency in a bin of a 2D histogram in Julia

假设我有一些二维数据点,使用 Julia 中的 Plots 包,可以轻松绘制二维直方图。我的任务是定义一个函数,该函数将数据点映射到该点所属的 bin 的数据点频率。是否有任何功能可以很好地完成这项任务?

例如,如下面的二维直方图:

并且我想定义一个函数,当我输入一个在这个直方图范围内的任意数据点时,该函数将输出相应bin的频率。在上图中,当我输入 (0.1, 0.1) 时,函数应该输出 375(我想那里最亮的网格代表 375 的频率)。 Julia中有没有方便的函数来完成上述任务?

编辑:

using Plots
gr()
histogram2d(randn(10000), randn(10000), nbins=20)

直方图是根据标准正态分布生成的 10000 个二维数据点创建的。 Julia中有没有输入一个二维点,输出该点所属bin的频率的函数?可以通过创建数组和 bin 并计算输入数据点的 bin 中的元素数量来自己编写一个,但这将是一种乏味的方法。

我不是 100% 确定这是否是 StatsPlots 正在做的事情,但一种方法可能是使用适用于 N 维的 StatsBase 直方图:

using StatsBase, StatsPlots, Distributions

# Example data 
data = (randn(10_000), randn(10_000))

# Plot StatsPlots 2D histogram
histogram2d(data)

# Fit a histogram with StatsBase
h = fit(Histogram, data)
x = searchsortedfirst(h.edges[1], 0.1)  # returns 10
y = searchsortedfirst(h.edges[2], 0.1)  # returns 11
h.weights[x, y] # returns 243

# Or as a function
function get_freq(h, xval, yval)
    x = searchsortedfirst(h.edges[1], xval)
    y = searchsortedfirst(h.edges[2], yval)
    h.weights[x, y]
end

get_freq(h, 1.4, 0.6) # returns 32