跳到內容

發散比例尺

發散比例尺類似於 線性比例尺,它們會將連續的數字輸入域對應到連續的輸出範圍。與線性比例尺不同的是,發散比例尺的輸入域和輸出範圍永遠只有三個元素,而輸出範圍通常指定為插補器,而不是值陣列。發散比例尺通常用於顏色編碼;另請參閱 d3-scale-chromatic。這些比例尺不會公開 反轉插補 方法。發散比例尺也有 對數冪次對稱對數 變體。

scaleDiverging(domain, interpolator)

範例 · 原始碼 · 建立一個新的發散比例尺,其 domaininterpolator 函數或陣列為指定值。

js
const color = d3.scaleDiverging([-1, 0, 1], d3.interpolateRdBu);

如果未指定 domain,預設為 [0, 0.5, 1]。

js
const color = d3.scaleDiverging(d3.interpolateRdBu);

如果未指定 interpolator,預設為恆等函數。

js
const identity = d3.scaleDiverging();

套用比例尺時,interpolator 會以一個通常在 [0, 1] 範圍內的值呼叫,其中 0 代表極負值,0.5 代表中立值,1 代表極正值。

如果 interpolator 是陣列,它代表比例尺的三元素輸出範圍,並使用 d3.interpolated3.piecewise 轉換為 interpolator 函數。

js
const color = d3.scaleDiverging(["blue", "white", "red"]);

發散比例尺的 domain 必須是數字,且必須包含三個值。

diverging.interpolator(interpolator)

如果指定 interpolator,將比例尺的 interpolator 設定為指定的函數。

js
const color = d3.scaleDiverging().interpolator(d3.interpolateRdBu);

如果未指定 interpolator,傳回比例尺目前的 interpolator。

js
color.interpolator() // d3.interpolateRdBu

diverging.range(range)

請參閱 linear.range。如果指定 range,給定的三個元素陣列會使用 piecewise 轉換為 interpolator 函數。

js
const color = d3.scaleDiverging().range(["blue", "white", "red"]);

以上等同於

js
const color = d3.scaleDiverging(d3.piecewise(["blue", "white", "red"]));

diverging.rangeRound(range)

請參閱 linear.range。如果指定 range,會隱含地使用 interpolateRound 作為 interpolator。

scaleDivergingLog(domain, range)

傳回一個具有對數轉換的新發散比例尺,類似於 對數比例尺

scaleDivergingPow(domain, range)

傳回一個具有指數轉換的新發散比例尺,類似於 次方比例尺

scaleDivergingSqrt(domain, range)

傳回一個具有平方根轉換的新發散比例尺,類似於 平方根比例尺

scaleDivergingSymlog(domain, range)

傳回一個新的發散比例尺,具有對稱對數轉換,類似於 symlog 比例尺