Skip to content

颜色插值

🌐 Color interpolation

用于各种颜色空间中颜色的插值器。

🌐 Interpolators for colors in various color spaces.

interpolateRgb(a, b)

js
d3.interpolateRgb("purple", "orange")

示例 · 来源 · 返回一个在两个颜色 ab 之间进行 RGB 颜色空间插值的函数,并可配置 伽马。如果未指定伽马值,则默认为 1.0。颜色 ab 不必是 RGB 格式;它们将使用 d3.rgb 转换为 RGB。插值函数的返回值是一个 RGB 字符串。

interpolateRgbBasis(颜色)

🌐 interpolateRgbBasis(colors)

js
d3.interpolateRgbBasis(["purple", "green", "orange"])

示例 · 来源 · 返回通过指定的 colors 数组的统一非有理 B 样条插值器,这些颜色会被转换为 RGB 颜色空间。会生成隐式控制点,使插值器在 t = 0 时返回 colors[0],在 t = 1 时返回 colors[colors.length - 1]。当前不支持不透明度插值。另请参见 d3.interpolateBasis,以及有关示例,请参见 d3-scale-chromatic

interpolateRgbBasisClosed(colors)

js
d3.interpolateRgbBasisClosed(["purple", "green", "orange"])

示例 · 来源 · 返回通过指定的 colors 数组的统一非有理 B 样条插值器,这些颜色会被转换为 RGB 颜色空间。控制点会被隐式重复,使得在 t 属于 [0,1] 时重复时,得到的样条具有循环的 C² 连续性;例如,这对于创建循环颜色刻度非常有用。目前不支持透明度插值。另请参阅 d3.interpolateBasisClosed,有关示例,请参阅 d3-scale-chromatic

interpolateHsl(a, b)

js
d3.interpolateHsl("purple", "orange")

示例 · 来源 · 返回一个在两个颜色 ab 之间的 HSL 颜色空间插值器。颜色 ab 不必是 HSL;它们将使用 d3.hsl 转换为 HSL。如果任一颜色的色相或饱和度为 NaN,将使用另一颜色的通道值。使用色相之间的最短路径。插值器的返回值是一个 RGB 字符串。

interpolateHslLong(a, b)

js
d3.interpolateHslLong("purple", "orange")

示例 · 来源 · 像 interpolateHsl,但不使用色相之间的最短路径。

interpolateLab(a, b)

js
d3.interpolateLab("purple", "orange")

示例 · 来源 · 返回两个颜色 ab 之间的 CIELAB 颜色空间 插值器。颜色 ab 不必在 CIELAB 中;它们将使用 d3.lab 转换为 CIELAB。插值器的返回值是一个 RGB 字符串。

interpolateHcl(a, b)

js
d3.interpolateHcl("purple", "orange")

示例 · 来源 · 返回两个颜色 ab 之间的 CIELChab 颜色空间 插值器。颜色 ab 不必属于 CIELChab;它们将使用 d3.hcl 转换为 CIELChab 。如果任一颜色的色相或饱和度为 NaN,则使用对方颜色的通道值。使用色相之间的最短路径。插值器的返回值是 RGB 字符串。

interpolateHclLong(a, b)

js
d3.interpolateHclLong("purple", "orange")

示例 · 来源 · 像 interpolateHcl,但不使用色相之间的最短路径。

interpolateCubehelix(a, b)

js
d3.interpolateCubehelix("purple", "orange")
js
d3.interpolateCubehelix.gamma(3)("purple", "orange")

示例 · 来源 · 返回一个在两个颜色 ab 之间使用可配置的 gamma 的 Cubehelix 颜色空间插值器。如果未指定 gamma,默认为 1.0。颜色 ab 不必是 Cubehelix,它们将使用 d3.cubehelix 转换为 Cubehelix。如果任一颜色的色相或饱和度为 NaN,则使用另一颜色的通道值。使用色相之间的最短路径。插值器的返回值是一个 RGB 字符串。

interpolateCubehelixLong(a, b)

js
d3.interpolateCubehelixLong("purple", "orange")
js
d3.interpolateCubehelixLong.gamma(3)("purple", "orange")

示例 · 来源 · 类似 interpolateCubehelix,但不使用色相之间的最短路径。

interpolateColor.gamma(gamma)

js
d3.interpolateRgb.gamma(2.2)("purple", "orange")

假设 interpolateinterpolateRgbinterpolateCubehelixinterpolateCubehelixLong 之一,则返回使用指定 gamma 的相同类型的新插值器工厂。有关 gamma 校正的更多信息,请参见 Eric Brasseur 的文章 Gamma error in picture scaling

🌐 Given that interpolate is one of interpolateRgb, interpolateCubehelix or interpolateCubehelixLong, returns a new interpolator factory of the same type using the specified gamma. See Eric Brasseur’s article, Gamma error in picture scaling, for more on gamma correction.

interpolateHue(a, b)

js
d3.interpolateHue(20, 340)(0.5) // 0

示例 · 来源 · 返回两个色相角 ab 之间的插值器。如果任一色相为 NaN,则使用对方的值。使用色相之间的最短路径。插值器的返回值是 [0, 360) 范围内的数字。

标准插值器将从起始值 at = 0 时过渡到结束值 bt = 1 时,而样条插值器则使用分段多项式函数平滑地融合在 [0,1] 范围内的多个输入值。目前仅支持三次均匀非有理 B 样条,也称为基样条。

🌐 Whereas standard interpolators blend from a starting value a at t = 0 to an ending value b at t = 1, spline interpolators smoothly blend multiple input values for t in [0,1] using piecewise polynomial functions. Only cubic uniform nonrational B-splines are currently supported, also known as basis splines.