chart = {
const svg = d3.create("svg")
.attr("viewBox", [0, 0, width, height]);
const drag = d3.drag()
.subject((event, d) => ({x: fromCartesianX(d.x), y: fromCartesianY(d.y)}))
.on("drag", dragged);
svg.selectAll("circle")
.data([{x: 0, y: 0}])
.join("circle")
.attr("cx", d => fromCartesianX(d.x))
.attr("cy", d => fromCartesianY(d.y))
.attr("r", 40)
.call(drag);
function dragged(event, d) {
d.x = toCartesianX(event.x);
d.y = toCartesianY(event.y);
d3.select(this).attr("cx", event.x).attr("cy", event.y);
}
return svg.node();
}