Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.colors function in barChart dc.js with only two options

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.

like image 900
Chapo Avatar asked Dec 26 '22 13:12

Chapo


1 Answers

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().

like image 154
DJ Martin Avatar answered Feb 11 '23 05:02

DJ Martin