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.
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()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With