Javascript 未捕获类型错误:d3.schemeCategory20不是函数

Javascript 未捕获类型错误:d3.schemeCategory20不是函数,javascript,d3.js,Javascript,D3.js,我是d3js和所有javascript领域的新手。在我的html文件中,我只需像这样导入脚本: <script src="https://d3js.org/d3.v4.min.js"></script> 我有个例外 未捕获的TypeError:d3.schemeCategory20不是位于的函数 index.html:48 我是否需要其他必须导入的d3js模块?或者是什么导致了这个问题?d3。SchemeCategory 20既不是一个尺度,也不是一个函数。它只是一个颜

我是d3js和所有javascript领域的新手。在我的html文件中,我只需像这样导入脚本:

<script src="https://d3js.org/d3.v4.min.js"></script>
我有个例外

未捕获的TypeError:d3.schemeCategory20不是位于的函数 index.html:48


我是否需要其他必须导入的d3js模块?或者是什么导致了这个问题?

d3。SchemeCategory 20
既不是一个尺度,也不是一个函数。它只是一个颜色的数组。据报道,这是

由二十种分类颜色组成的数组,表示为RGB十六进制字符串

同样的API说:

这些配色方案设计用于d3.scaleOrdinal

因此,必须将其传递到序号刻度作为其范围,如下所示:

var myScale = d3.scaleOrdinal()
    .range(d3.schemeCategory20)
这与:

    var myScale = d3.scaleOrdinal(d3.schemeCategory20)
下面是一个演示:

var scale=d3.scaleOrdinal(d3.schemeCategory 20);
d3.选择(“正文”)。选择全部(空)
.数据(d3.范围(20))
.输入()
.附加(“div”)
.style(“背景色”,函数(d){返回刻度(d)})
div{
最小高度:10px;
}

d3.schemeCategory20
它完全不是一个函数。它是默认颜色的数组。应该将此数组传递给缩放函数

console.log('d3.schemeCategory20==>',d3.schemeCategory20)

d3 v4的
。你可以用like作为

   var color = d3.scaleOrdinal(d3.schemeCategory20c);
                     or
    var color = d3.scaleOrdinal()
      .range(["red", "green", "blue", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);

对于任何在未来D3版本中寻找它的人,以及在使用这个配色方案时也要考虑的问题。D3 5.0的变化:

D3不再提供D3.schemeCategory20*分类颜色 计划。这二十种配色方案都有缺陷,因为它们的颜色组合在一起 设计可能会错误地暗示数据中的关系:共享色调可以 暗示编码数据是组(超类别)的一部分, 相对的轻巧意味着秩序

(v5) D3不再提供D3.schemeCategory20*分类颜色方案。这二十种配色方案存在缺陷,因为它们的分组设计可能会错误地暗示数据中的关系:共享色调可能暗示编码数据是组(超级类别)的一部分,而相对亮度可能暗示顺序。取而代之的是,D3现在包括D3比例色度,它实现了ColorBrewer的优秀方案,包括分类、发散、顺序单色调和顺序多色调方案。这些方案在离散和连续变量中都可用

   var color = d3.scaleOrdinal(d3.schemeCategory20c);
                     or
    var color = d3.scaleOrdinal()
      .range(["red", "green", "blue", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);