update excluding multiples
Example of a set of graphs where one of the attribute is required not to be summed all the time.
by raino01r
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.js"></script>
<script src="https://dc-js.github.io/dc.js/js/crossfilter.js"></script>
<script src="https://dc-js.github.io/dc.js/js/dc.js"></script>
<link rel="stylesheet" href="https://dc-js.github.io/dc.js/css/dc.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/reductio/0.6.3/reductio.min.js"></script>
</br>
<div id="brush">Select time</div>
</br>
<div id="bymonth">Month</div>
</br>
<div id="byroom">Room</div>
</br>
<div id="bytype">Type</div>
CSS
#brush g.y { /*Hide y axis on top bar-brush*/
display: none;
}
JavaScript
var dateFormat = d3.time.format('%Y-%m');
var data = [
{"machineCount": 9, "failCount": 5, "month": "2016-12", "room": "1", "type": "A"},
{"machineCount": 7, "failCount": 2, "month": "2016-12", "room": "2", "type": "A"},
{"machineCount": 2, "failCount": 2, "month": "2016-12", "room": "3", "type": "A"},
{"machineCount": 9, "failCount": 1, "month": "2016-12", "room": "1", "type": "B"},
{"machineCount": 7, "failCount": 5, "month": "2016-12", "room": "2", "type": "B"},
{"machineCount": 2, "failCount": 4, "month": "2016-12", "room": "3", "type": "B"},
{"machineCount": 8, "failCount": 3, "month": "2017-01", "room": "1", "type": "A"},
{"machineCount": 7, "failCount": 2, "month": "2017-01", "room": "2", "type": "A"},
{"machineCount": 3, "failCount": 9, "month": "2017-01", "room": "3", "type": "A"},
{"machineCount": 8, "failCount": 3, "month": "2017-01", "room": "1", "type": "B"},
{"machineCount": 7, "failCount": 9, "month": "2017-01", "room": "2", "type": "B"},
{"machineCount": 3, "failCount": 3, "month": "2017-01", "room": "3", "type": "B"},
{"machineCount": 0, "failCount": 0, "month": "2017-02", "room": "3", "type": "B"},
];
data.forEach(function(x) {x['month'] = dateFormat.parse(x['month']);});
var brush_chart = dc.lineChart('#brush'),
bymonth_chart = dc.barChart('#bymonth'),
byroom_chart = dc.rowChart('#byroom'),
bytype_chart = dc.rowChart('#bytype');
// data
var ndx = crossfilter(data);
// dimensions
var brush_rate_dim = ndx.dimension(function(d){return d.month;}),
month_rate_dim = ndx.dimension(function(d){return d.month;}),
type_rate_dim = ndx.dimension(function(d){return d.type;}),
room_rate_dim = ndx.dimension(function(d){return d.room;});
var time_domain = [
d3.time.month.offset(dateFormat.parse('2016-12'), -2),
d3.time.month.offset(dateFormat.parse('2017-01'), 2)
];
// groups
var reducer = reductio()
reducer
.value('mach_count')
.exception(function(d) {...