{
let width = 600,
height = 200,
X = cm.range(width, -3, 3),
sigma = 0.5,
step = 0.01;
function update(app) {
const curve = bellCurve(0, sigma);
app.append(cm.clear, { fill: "#fff" });
app
.data(X)
.append(cm.line, {
x: (_, i) => i,
y: (d) => curve(d),
stroke: "black",
strokeWidth: 2
})
.transform(cm.mapPosition, {
domainY: [0, 1],
padding: 5,
reverseY: true
});
sigma += step;
if (sigma > 2 || sigma < 0.3) step *= -1;
}
function dispose(app) {
invalidation.then(() => app.dispose());
}
return cm
.app({ width: 600, height: 200 })
.on("update", update)
.call(dispose)
.start()
.node();
}