Stacked chart colorize

17 views
Skip to first unread message

Ignat Varlamov

unread,
Nov 16, 2016, 8:13:09 AM11/16/16
to dc-js user group
Hello
I have created a stacked chart
my data look like this:
[{probability: 0.12 , impact: 27 }, {probability: 0.22 , impact: 27 }, {probability: 0.44 , impact: 27 }, {probability: 0.12 , impact: 28 }, {probability: 0.31 , impact: 28 }, {probability: 0.41 , impact: 28 }, ...]
impact - X
probability - Y
Many data on the same axis X. I had to calculate the difference between the Y-axis components of the same X.

got It
"[{"coordinate":0.027215999999999997,"probability":0.027215999999999997,"impact":23,"stackNumber":0},{"coordinate":0.01701,"probability":0.01701,"impact":24,"stackNumber":0},{"coordinate":0.055566000000000004,"probability":0.072576,"impact":24,"stackNumber":1},{"coordinate":0.015119999999999998,"probability":0.015119999999999998,"impact":25,"stackNumber":0},{"coordinate":0.03024,"probability":0.04536,"impact":25,"stackNumber":1},{"coordinate":0.00945,"probability":0.00945,"impact":26,"stackNumber":0},{"coordinate":0.013229999999999999,"probability":0.02268,"impact":26,"stackNumber":1},{"coordinate":0.017639999999999996,"probability":0.040319999999999995,"impact":26,"stackNumber":2},{"coordinate":0.014175,"probability":0.014175,"impact":27,"stackNumber":0},{"coordinate":0.011024999999999997,"probability":0.025199999999999997,"impact":27,"stackNumber":1},{"coordinate":0.02016,"probability":0.04536,"impact":27,"stackNumber":2},{"coordinate":0.015120000000000001,"probability":0.06048,"impact":27,"stackNumber":3}, ... ]


for these data, I constructed a dimension

this.demansion = crossData.dimension(function(d) {
        return d.impact
     });

and n groups

for(let i = 0; i<=this.maxIndex; i++) {
       this.groups.push(this.demansion.group().reduceSum(function(d) {
         return d.stackNumber === i ? d.coordinate : 0
       }))
}


and build a chart

barChart
      .dimension(this.demansion)
      .group(this.groups[0])
      .width(document.getElementById('main-card').offsetWidth*0.9)
      .height(480)
      .y(d3.scaleLinear().domain([0,self.maxY]))
      .x(d3.scaleLinear().domain([0,45]))
      .centerBar(true)
      .renderHorizontalGridLines(true)

for(let i = 1; i<this.maxIndex; i++) {
        this.barChart.stack(this.groups[i]);
      }


Now I need to set the color for each element of the stack, in accordance with its value probability, but in  colorAccessor(function(d) { })
 i have the "coordinate" value. 
What do I need to get the real probability value in the colorAccessor?

Reply all
Reply to author
Forward
0 new messages