chart = {
const svg = d3.create("svg")
.attr("viewBox", [0, 0, width, height]);
const nutdata1 = viewof nutdata0.value.data;
const nutname1 = viewof nutdata0.value.name;
const x = d3.scaleLinear()
.domain([0, 20])
.rangeRound([margin.left, width - margin.right]);
const y = d3.scaleBand()
.domain(nutdata1.map(d => d.Cereal))
.rangeRound([margin.top, margin.top + 20 * cdata.length]);
let bar = svg.append("g")
.attr("fill", "steelblue")
.selectAll("rect")
.data(nutdata1, d => d.Cereal)
.join("rect")
.style("mix-blend-mode", "multiply")
.attr("x", x(0))
.attr("y", d => y(d.Cereal))
.attr("width", d => x(d[nutname1]) - x(0))
.attr("height", y.bandwidth() - 1);
const gx = svg.append("g")
.call(xAxis, x);
const gy = svg.append("g")
.call(yAxis, y);
return Object.assign(svg.node(), {
update(nutdata4) {
const t = svg.transition().duration(750);
const nutdata3 = viewof nutdata0.value.data;
const nutname3 = viewof nutdata0.value.name;
gx.transition(t)
.call(xAxis, x.domain([0, 20]));
gy.transition(t)
.call(yAxis, y.domain(nutdata3.map(d => d.Cereal)));
bar = bar
.data(nutdata3, d => d.Cereal)
.call(bar => bar.transition(t)
.attr("width", d => x(d[nutname3]) - x(0))
.attr("y", d => y(d.Cereal)));
}
});
}