密度估计
轮廓可以显示点云的估计密度,这在大型数据集中避免过度绘制很有用。 contourDensity 方法实现了快速二维核密度估计。
这是一个散点图,显示了老忠实间歇泉的喷发间隔时间和喷发持续时间之间的关系。
这是一个密度等高线图,显示了 53,940 颗钻石的重量和价格之间的关系。
contourDensity()
density(data)
源代码 · 估计给定data数组的密度等高线,返回一个 GeoJSON MultiPolygon 几何对象 数组。
每个几何对象表示估计的每平方像素点数大于或等于相应 阈值 的区域;每个几何对象的阈值以 geometry.value 的形式公开。返回的几何对象通常传递给 geoPath 以显示,使用 null 或 geoIdentity 作为关联的投影。另请参阅 contours。
每个数据点的 x 和 y 坐标使用 density.x 和 density.y 计算。此外,density.weight 表示每个数据点的相对贡献(默认值为 1)。生成的等高线仅在估计器的 定义大小 内是准确的。
density.x(x)
源代码 · 如果指定了x,则设置x坐标访问器。如果未指定x,则返回当前x坐标访问器,默认值为
function x(d) {
return d[0];
}
density.y(y)
源代码 · 如果指定了y,则设置y坐标访问器。如果未指定y,则返回当前y坐标访问器,默认值为
function y(d) {
return d[1];
}
density.weight(weight)
源代码 · 如果指定了weight,则设置点权重的访问器。如果未指定weight,则返回当前点权重访问器,默认值为
function weight() {
return 1;
}
density.size(size)
源代码 · 如果指定了size,则将密度估计器的大小设置为指定边界并返回估计器。size 指定为数组 [width, height],其中 width 是最大x值,height 是最大y值。如果未指定size,则返回当前大小,默认值为 [960, 500]。 估计的密度等高线 仅在定义的大小内是准确的。
density.cellSize(cellSize)
源代码 · 如果指定了cellSize,则将底层 bin 网格中单个单元格的大小设置为指定的正整数并返回估计器。如果未指定cellSize,则返回当前单元格大小,默认值为 4。单元格大小向下舍入到最接近的二的幂。较小的单元格会生成更详细的轮廓多边形,但计算成本更高。
density.thresholds(thresholds)
源代码 · 如果指定了thresholds,则将阈值生成器设置为指定的函数或数组并返回此轮廓生成器。如果未指定thresholds,则返回当前阈值生成器,该生成器默认情况下会生成大约二十个漂亮的舍入密度阈值。
阈值定义为一组值 [x0, x1, …]。第一个 生成的密度等高线 对应于估计密度大于或等于x0 的区域;第二条等高线对应于估计密度大于或等于x1 的区域,依此类推。因此,对于每个指定的阈值,正好有一个生成的 MultiPolygon 几何对象;阈值以 geometry.value 的形式公开。第一个值x0 通常应大于零。
如果指定了count 而不是一组thresholds,那么将生成大约count 个均匀间隔的漂亮的舍入阈值;参见 ticks。
density.bandwidth(bandwidth)
源代码 · 如果指定了bandwidth,则设置高斯核的带宽(标准差)并返回估计。如果未指定bandwidth,则返回当前带宽,默认值为 20.4939… 。指定的bandwidth 当前会舍入到此实现支持的最接近的值,并且必须是非负的。
density.contours(data)
示例 · 源代码 · 返回一个 contour(value) 函数,该函数可用于计算给定数据上的任意等高线,而无需重新计算底层网格。返回的 contour 函数还公开一个 contour.max 值,该值表示网格的最大密度。