chart = {
const svg = d3.create("svg")
.attr("viewBox", [0, 0, width, dms.height]);
svg.append("g")
.selectAll("rect")
.data(anom_data)
.join("rect")
.attr("fill", d => xAccessor(d) > 0 ? styling.aboveAveCol : styling.belowAveCol)
.attr("x", d => xScale(Math.min(xAccessor(d), 0)))
.attr("y", (d, i) => yScale(i))
.attr("width", d => Math.abs(xScale(xAccessor(d)) - xScale(0)))
.attr("height", yScale.bandwidth());
svg.append("g")
.attr("font-family", "sans-serif")
.attr("font-size", 10)
.attr("class", "barLabelGroup")
.selectAll("text")
.data(anom_data)
.join("text")
.filter((d, i) => i % 2 === 0 ? yAccessor(d) : null)
.attr("text-anchor", d => xAccessor(d) < 0 ? "end" : "start")
.attr("x", d => xScale(xAccessor(d)) + Math.sign(xAccessor(d) - 0) * 4)
.attr("y", (d, i) => yScale(yAccessor(d) - d3.min(anom_data, d => yAccessor(d))) + yScale.bandwidth() / 2)
.attr("dy", "0.35em")
.attr("fill", d => xAccessor(d) > 0 ? styling.aboveAveCol : styling.belowAveCol)
.text(d => styling.format(xAccessor(d)));
svg.append("g")
.call(xAxisTop);
svg.append("g")
.call(xAxisBottom);
svg.append("g")
.call(yAxis);
return svg;
}