Plot.plot({
marks: [
Plot.cell(data, {
x: "u",
y: "n",
fill: (d) => {
let r = d3.range(0, d.uBits + 1);
let i = d3.minIndex(r, (lo) => bpe(d.n, d.u, lo));
const best = bpe(d.n, d.u, r[i]);
const baseline = d.bpe;
return baseline - best > 1e-3;
},
title: JSON.stringify,
inset: 0.25
})
],
aspectRatio: 1,
padding: 0,
y: {
ticks: d3.range(sz + 1).map((d) => 2 ** d),
label: "Number of elements",
reverse: true
},
x: { ticks: d3.range(sz + 1).map((d) => 2 ** d), label: "Universe size" },
color: { scheme: "blues", reverse: true, legend: true }
})