密度估計
等值線可以顯示點雲的估計密度,這有助於避免在大型資料集中過度繪製。 contourDensity 方法實作了快速二維核密度估計。
以下是一個散佈圖,顯示 Old Faithful 的閒置時間和噴發時間之間的關係
以下是一個密度等值線圖,顯示 53,940 顆鑽石的重量和價格之間的關係
contourDensity()
density(data)
原始碼 · 估計給定 data 陣列的密度等值線,傳回一個 GeoJSON 多邊形 幾何物件 陣列。
每個幾何物件代表估計每平方像素的點數大於或等於對應的閾值的區域;每個幾何物件的閾值顯示為 geometry.value。傳回的幾何物件通常傳遞給 geoPath 顯示,使用 null 或 geoIdentity 作為關聯的投影。另請參閱 等值線。
每個資料點的 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。儲存格大小會向下取整為最接近的 2 的次方。較小的儲存格會產生更詳細的等值線多邊形,但計算成本較高。
density.thresholds(thresholds)
原始碼 · 如果指定 thresholds,則將閾值產生器設定為指定的函式或陣列,並傳回此等值線產生器。如果未指定 thresholds,則傳回目前的閾值產生器,預設會產生約二十個經過良好捨入的密度閾值。
閾值定義為值陣列 [x0, x1, …]。第一個 產生的密度等值線 對應於估計密度大於或等於 x0 的區域;第二個等值線對應於估計密度大於或等於 x1 的區域,以此類推。因此,每個指定的閾值都會產生一個多邊形幾何物件;閾值會顯示為 geometry.value。第一個值 x0 通常應大於零。
如果指定 count,而不是 thresholds 陣列,則會產生約 count 個間隔均勻且經過良好捨入的閾值;請參閱 ticks。
density.bandwidth(bandwidth)
原始碼 · 如果指定 bandwidth,則將高斯核心的頻寬(標準差)設定為指定的 bandwidth,並傳回估計值。如果未指定 bandwidth,則傳回目前的頻寬,預設為 20.4939…。指定的 bandwidth 目前會由這個實作捨入為最接近的支援值,且必須為非負值。
density.contours(data)
範例 · 原始碼 · 傳回 contour(value) 函式,可使用此函式計算給定資料上的任意等值線,而不需要重新計算底層格線。傳回的 contour 函式也會顯示 contour.max 值,代表格線的最大密度。