D3 V5 ScaleThreshold不接受范围内的弦颜色数组



这是我的代码:

var legendThreshold = d3
      .scaleThreshold()
      .domain(
        (function(min, max, count) {
          var array = [];
          var step = (max - min) / count;
          var base = min;
          for (var i = 1; i < count; i++) {
            array.push(base + i * step);
          }
          return array;
        })(minTemp, maxTemp, legendColors.length)
      )
      .range(["red", "white", "green"]);

我在范围上遇到错误:

类型'string []'的参数不能分配给类型的参数 'readonly编号[]'

但是,如果您在此链接中查看示例,我相信我的代码应该是正确的。我该如何解决?

似乎您正在使用Typescript。

您可能需要为d3.scaleThreshold()提供仿制药以接受字符串。

如D3.js的绝对型打字字体类型定义,

  • 构建一个新的阈值量表。必须设置域和范围,以对应于相应的通用类型。
    • 第一个通用对应于域值的数据类型。
    • 第二个通用物对应于范围值的数据类型。

由于您正在使用domainrange的字符串,因此我们可以将这两种类型指定为string

d3.scaleThreshold<string, string>().domain().range()

参考

最新更新