Notice the left and bottom padding in the outer container that makes the nested marks not take up the full space. It is because Observable Plot automatically allocates padding to draw axes, which is something we may not always want. We can manually hide them by using
let cityRects = canvas.rect(cityavgprice,
{ ...sq("avgprice")(), stroke: "black", fill: "none" },
{x: {axis:null}, y:{axis:null}});
But we should have a shorthand.
