顺序比例
顺序比例类似于 线性比例,它们将连续的数值输入域映射到连续的输出范围。与线性比例不同,顺序比例的输入域和输出范围始终恰好包含两个元素,输出范围通常指定为插值器而不是值数组。顺序比例通常用于颜色编码;另请参见 d3-scale-chromatic。这些比例不公开 invert 和 interpolate 方法。顺序比例还有 log、pow、symlog 和 quantile 变体。
scaleSequential(domain, interpolator)
示例 · 源代码 · 使用指定的 domain 和 interpolator 函数或数组构建新的顺序比例。
const color = d3.scaleSequential([0, 100], d3.interpolateBlues);
如果未指定 domain,则其默认值为 [0, 1]。
const color = d3.scaleSequential(d3.interpolateBlues);
如果未指定 interpolator,则其默认值为恒等函数。
const identity = d3.scaleSequential();
当应用比例时,插值器将使用通常在 [0, 1] 范围内的值调用,其中 0 表示最小值,1 表示最大值。例如,要实现不建议使用的愤怒彩虹比例(请改用 interpolateRainbow)
const rainbow = d3.scaleSequential((t) => d3.hsl(t * 360, 1, 0.5) + "");
如果 interpolator 是数组,则它表示比例的两个元素输出范围,并使用 interpolate 转换为插值器函数。
const color = d3.scaleSequential(["red", "blue"]);
顺序比例的域必须是数值,且必须恰好包含两个值。
sequential.interpolator(interpolator)
如果指定了 interpolator,则将比例的插值器设置为指定的函数。
const color = d3.scaleSequential().interpolator(d3.interpolateBlues);
如果未指定 interpolator,则返回比例的当前插值器。
color.interpolator() // d3.interpolateBlues
sequential.range(range)
参见 linear.range。如果指定了 range,则使用 interpolate 将给定的两个元素数组转换为插值器函数。
const color = d3.scaleSequential().range(["red", "blue"]);
以上等同于
const color = d3.scaleSequential(d3.interpolate("red", "blue"));
sequential.rangeRound(range)
参见 linear.rangeRound。如果指定了 range,则隐式使用 interpolateRound 作为插值器。
scaleSequentialLog(domain, range)
返回具有对数变换的新顺序比例,类似于 log 比例。
scaleSequentialPow(domain, range)
返回具有指数变换的新顺序比例,类似于 幂比例。
scaleSequentialSqrt(domain, range)
返回具有平方根变换的新顺序比例,类似于 sqrt 比例。
scaleSequentialSymlog(domain, range)
返回具有对称对数变换的新顺序比例,类似于 symlog 比例。
scaleSequentialQuantile(domain, range)
源代码 · 返回具有 p-分位数变换的新顺序比例,类似于 分位数比例。
sequentialQuantile.quantiles(n)
源代码 · 返回包含 n + 1 个分位数的数组。
const color = d3.scaleSequentialQuantile()
.domain(penguins.map((d) => d.body_mass_g))
.interpolator(d3.interpolateBlues);
color.quantiles(4); // [2700, 3550, 4050, 4750, 6300]
例如,如果 n = 4,则返回包含五个数字的数组:最小值、第一个四分位数、中位数、第三个四分位数和最大值。