当我尝试在d3中应用分歧颜色方案时,例如d3.interpolateSpectral with sequential scale,它总是返回:
未捕获的TypeError:t不是函数
因为没有" t"在我写的代码中,我认为它与" t"在original colour scheme中 如果是的话,我不确定如何应用,因为我引用一个例子来使用that colour scheme,没有" t"既不
以下是颜色比例的相关代码:
var color=d3.scaleSequential(d3.interpolateSpectral);
color.domain([d3.min(data, function(d){return d.population;}),
d3.max(data, function(d){return d.population;})]);
selection.style("fill", function(d){
var value=d.properties.value;
if(value){
return color(value);
} else{
return "#ccc";
}
任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
鉴于您的错误,您可能正在使用D3 v4。如果这是正确的,你必须参考scale-chromatic迷你库:
<script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
看看这个演示,没有引用迷你库,我们得到同样的错误(打开浏览器的控制台看看):
var color = d3.scaleSequential(d3.interpolateSpectral);
console.log(color(1))
&#13;
<script src="https://d3js.org/d3.v4.min.js"></script>
&#13;
如果我们引用迷你库,我们就不会再看到错误了:
var color = d3.scaleSequential(d3.interpolateSpectral);
console.log(color(1))
&#13;
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
&#13;
最后,值得一提的是,使用D3 v5,我们不必参考它:
var color = d3.scaleSequential(d3.interpolateSpectral);
console.log(color(1))
&#13;
<script src="https://d3js.org/d3.v5.min.js"></script>
&#13;