发散刻度
发散刻度类似于 线性刻度,它们将连续的数值输入域映射到连续的输出范围。与线性刻度不同的是,发散刻度的输入域和输出范围始终恰好包含三个元素,并且输出范围通常指定为插值器,而不是值数组。发散刻度通常用于颜色编码;另请参见 d3-scale-chromatic。这些刻度不公开 invert 和 interpolate 方法。还有 log、pow 和 symlog 发散刻度的变体。
scaleDiverging(domain, interpolator)
示例 · 源代码 · 使用指定的 domain 和 interpolator 函数或数组构造一个新的发散刻度。
const color = d3.scaleDiverging([-1, 0, 1], d3.interpolateRdBu);
如果未指定 domain,则默认值为 [0, 0.5, 1]。
const color = d3.scaleDiverging(d3.interpolateRdBu);
如果未指定 interpolator,则默认值为恒等函数。
const identity = d3.scaleDiverging();
当应用刻度时,插值器将使用一个值调用,该值通常在 [0, 1] 范围内,其中 0 表示极负值,0.5 表示中性值,1 表示极正值。
如果 interpolator 是一个数组,则它表示刻度的三个元素输出范围,并使用 d3.interpolate 和 d3.piecewise 转换为插值器函数。
const color = d3.scaleDiverging(["blue", "white", "red"]);
发散刻度的域必须是数值,并且必须恰好包含三个值。
diverging.interpolator(interpolator)
如果指定了 interpolator,则将刻度的插值器设置为指定的函数。
const color = d3.scaleDiverging().interpolator(d3.interpolateRdBu);
如果未指定 interpolator,则返回刻度的当前插值器。
color.interpolator() // d3.interpolateRdBu
diverging.range(range)
参见 linear.range。如果指定了 range,则使用 piecewise 将给定的三个元素数组转换为插值器函数。
const color = d3.scaleDiverging().range(["blue", "white", "red"]);
以上等同于
const color = d3.scaleDiverging(d3.piecewise(["blue", "white", "red"]));
diverging.rangeRound(range)
参见 linear.range。如果指定了 range,则隐式地使用 interpolateRound 作为插值器。
scaleDivergingLog(domain, range)
返回一个具有对数变换的新发散刻度,类似于 log 刻度。
scaleDivergingPow(domain, range)
返回一个具有指数变换的新发散刻度,类似于 幂刻度。
scaleDivergingSqrt(domain, range)
返回一个具有平方根变换的新发散刻度,类似于 sqrt 刻度。
scaleDivergingSymlog(domain, range)
返回一个具有对称对数变换的新发散刻度,类似于 symlog 刻度。