chart = {
const svg = d3
.create('svg')
.attr('height', 200)
.attr('width', width);
const updateBarPos = bar =>
bar
.transition()
.attr('transform', (d, i) =>
trans(scaleBandX(i), scaleY.range([200, 0])(d))
)
.attr('height', scaleY.range([0, 200]));
const enterBar = bar =>
bar
.append('rect')
.attr('class', 'bar')
.attr('width', scaleBandX.step())
.call(updateBarPos);
const updateBar = bar => bar.call(updateBarPos);
function render(_data) {
svg
.selectAll('.bar')
.data(_data, (d, i) => i)
.join(enterBar, updateBar, bar => bar.remove());
}
render(data);
return Object.assign(svg.node(), { render });
}