{
const options = {
type: "interval",
transform: [
{ type: "stackY", reverse: true },
{ type: "normalizeY" },
{ type: "normalize", channel: "fillOpacity", basis: "sum" }
],
labels: [
{ text: "y", position: "left top", dy: "1em" },
{ text: "value", position: "left top", dy: "2em" }
],
scale: {
x: {
padding: 0,
title: false,
position: "top",
formatter: (d, f) => `${d}, ${f}`,
flex: d3.rollups(
data,
(v) => d3.sum(v, (d) => d.value),
(d) => d.x
)
},
y: { padding: 0, display: false },
color: { display: false, range: d3.schemeTableau10 }
},
encode: {
x: "x",
y: { value: "value", format: "+" },
color: "y",
fillOpacity: "value"
},
style: {
inset: 10
}
};
return md`A better spec...`;
}