d3.js 应用颜色范围不适用于 JSON
d3.js applying color ranges not working with JSON
我正在使用 d3.js 设置一个简单的条形图,并希望每个条形根据其值的大小具有不同的颜色。我以前做过,但它似乎不适用于外部 JSON。我的颜色变量设置如下:
var maxConv = d3.max(data, function(d) {
return d.conversion;
}); //This finds and returns the biggest value for 'conversion'
var convColors = d3.scale.linear()
.domain([0, maxConv]) // uses the maxConv var above as highest range point
.range(['#ed5565','#da4453']);
但是,当我将其作为填充元素应用于每个 "rect" 时,它不起作用(显示为黑色):
d3.select('#bestConvertorBarChart').append('svg')
.selectAll('rect').data(data)
.enter()
.append('rect')
.style('fill', convColors)
我是不是在做什么蠢事?
您的 convColors
正在使用对象而不是数字进行调用。您需要一个访问器函数,就像您用来计算最大值的函数一样。
.style('fill', function (d) {
return convColors(d.conversion);
});
我正在使用 d3.js 设置一个简单的条形图,并希望每个条形根据其值的大小具有不同的颜色。我以前做过,但它似乎不适用于外部 JSON。我的颜色变量设置如下:
var maxConv = d3.max(data, function(d) {
return d.conversion;
}); //This finds and returns the biggest value for 'conversion'
var convColors = d3.scale.linear()
.domain([0, maxConv]) // uses the maxConv var above as highest range point
.range(['#ed5565','#da4453']);
但是,当我将其作为填充元素应用于每个 "rect" 时,它不起作用(显示为黑色):
d3.select('#bestConvertorBarChart').append('svg')
.selectAll('rect').data(data)
.enter()
.append('rect')
.style('fill', convColors)
我是不是在做什么蠢事?
您的 convColors
正在使用对象而不是数字进行调用。您需要一个访问器函数,就像您用来计算最大值的函数一样。
.style('fill', function (d) {
return convColors(d.conversion);
});