chart = {
const svg = d3.select(DOM.svg(w + margin.left + margin.right, h + margin.top + margin.bottom));
const g = svg.append("g")
.classed("main", true)
.attr("transform", `translate(${margin.left}, ${margin.top})`);
const gx = g.append("g")
.call(xAxis);
const bars = g.selectAll(".bar")
.data(data, d => d.geoid)
.enter()
.append("rect")
.attr("x", 0)
.attr("y", d => scaleY(d.geoid))
.attr("width", d => scaleX(d.no_internet_access / d.total_pop))
.attr("height", scaleY.bandwidth())
.attr("fill", "steelblue");
svg.node().update = () => {
const t = d3.transition()
.duration(750);
bars
.data(data, d => d.geoid)
.order()
.transition(t)
.delay((d, i) => i * 2)
.attr("y", d => scaleY(d.geoid));
}
return svg.node();
}