分位數比例尺
分位數比例尺將取樣輸入域對應到離散範圍。域被視為連續的,因此比例尺將接受任何合理的輸入值;然而,域被指定為一組離散的樣本值。輸出範圍的數量(基數)決定了將從域計算的分位數數量。若要計算分位數,域會被排序,並視為 離散值的母體;請參閱 quantile。請參閱 此分位數等值線圖 以取得範例。
scaleQuantile(domain, range)
範例 · 原始碼 · 建立一個新的分位數比例尺,其具有指定的 domain 和 range。
const color = d3.scaleQuantile(penguins.map((d) => d.body_mass_g), d3.schemeBlues[5]);
如果 domain 或 range 沒有指定,則它們各自預設為空陣列。在同時指定域和範圍之前,分位數比例尺都是無效的。
quantile(value)
範例 · 原始碼 · 給定輸入 domain 中的 value,傳回輸出 range 中對應的值。
color(3000); // "#eff3ff"
color(4000); // "#6baed6"
color(5000); // "#08519c"
quantile.invertExtent(value)
範例 · 原始碼 · 傳回 領域 [x0, x1] 中的值範圍,對應於 範圍 中的 value:quantile 的反函數。
color.invertExtent("#eff3ff"); // [2700, 3475]
color.invertExtent("#6baed6"); // [3800, 4300]
color.invertExtent("#08519c"); // [4950, 6300]
此方法對於互動很有用,例如用來決定滑鼠下方的像素位置對應於領域中的哪個值。
quantile.domain(domain)
範例 · 原始碼 · 如果指定了 domain,則將分位數比例的領域設定為指定的離散數字值集合,並傳回此比例。
const color = d3.scaleQuantile(d3.schemeBlues[5]);
color.domain(penguins.map((d) => d.body_mass_g));
陣列不可為空,且必須包含至少一個數字值;NaN、null 和 undefined 值會被忽略,且不視為樣本母體的一部分。如果給定陣列中的元素不是數字,它們將會被強制轉換為數字。輸入陣列的副本會被排序並儲存在內部。
如果未指定 domain,則傳回比例的目前領域(已觀察到的值集合)。
color.domain() // [2700, 2850, 2850, 2900, 2900, 2900, 2900, …]
quantile.range(range)
範例 · 原始碼 · 如果指定了 range,則設定範圍中的離散值。
const color = d3.scaleQuantile();
color.range(d3.schemeBlues[5]);
陣列不可為空,且可以包含任何類型的值。range 陣列中的值數量(基數或長度)會決定要計算的分位數數量。例如,要計算四分位數,range 必須是一個包含四個元素的陣列,例如 [0, 1, 2, 3]。
如果未指定 range,則傳回目前的範圍。
color.range() // ["#eff3ff", "#bdd7e7", "#6baed6", "#3182bd", "#08519c"]
quantile.quantiles()
color.quantiles() // [3475, 3800, 4300, 4950]
如果 範圍 包含 n 個離散值,傳回的陣列將包含 n - 1 個閾值。小於第一個閾值的值會被視為第一個分位數;大於或等於第一個閾值但小於第二個閾值的值會在第二個分位數中,以此類推。在內部,閾值陣列會與 bisect 一起使用,以找出與給定的輸入值相關聯的輸出分位數。
分位數.copy()
const c1 = d3.scaleQuantile(d3.schemeBlues[5]);
const c2 = c1.copy();
變更此比例尺不會影響傳回的比例尺,反之亦然。