问题
I want to create a color function which shows red when the value is negative and green otherwise in a barChart.
Here is what I've come up with so far :
var colorChoice = d3.scale.ordinal().domain(["positive","negative"])
.range(["#00FF00","#FF0000"]);
hitsPerDaybarChart
.colors(function(d) {return(colorChoice((d.hits>0) ? "positive":"negative"));})
But I get the following error message : TypeError: Object function (d) {return(colorChoice((d.pnl>0) ? "positive":"negative"));} has no method 'range'
.
All help welcome. Thanks.
回答1:
You will want to use the colorAccessor function.
1) Define your color range and domain:
.colors(d3.scale.ordinal().domain(["positive", "negative"])
.range(["#00FF00", "#FF0000"]))
2) Define your color accessor:
.colorAccessor(function(d) {
if (d.value > 0) {
return "positive";
}
return "negative";
})
Hopefully this JSFiddle helps: http://jsfiddle.net/djmartin_umich/9ELWV/
Note: with the latest versions of d3.js, use d3.scaleOrdinal()
instead of d3.scale.ordinal()
.
来源:https://stackoverflow.com/questions/21715990/colors-function-in-barchart-dc-js-with-only-two-options