Plot.plot({
facet: { data, x: "sex" },
marks: [
Plot.dot(data, { x: "island", y: "body_mass", fill: "species" }),
(() => {
let facetIndex = 0;
return function (
data,
scales,
channels,
{ marginTop, marginBottom, marginLeft, marginRight, width, height }
) {
mutable debug = arguments;
return svg`<rect x=${marginLeft} width=${
width - marginLeft - marginRight
} y=${marginTop} height=${
height - marginTop - marginBottom
} fill="rgba(255,255,255,0.7)" stroke=black></rect><g transform="translate(${
(width + marginLeft - marginRight) / 2
},${(height + marginTop - marginBottom) / 2})">
<text dy=0.38em>${width - marginLeft - marginRight}px × ${
height - marginTop - marginBottom
}px</text>
<text dy=-1em>${scales.fx.domain()[facetIndex++]}</text>
</g>`;
};
})()
]
})