ribbonsBlue = {
const svg = d3
.create("svg")
.attr("width", width)
.attr("height", height)
.attr("viewBox", [0, 0, width, height]);
addBackgroundGradient(svg);
addGlow(svg);
const gradients = svg
.append("g")
.selectAll("linearGradient")
.data(d3.group(lineData, (d) => d.date))
.join("linearGradient")
.attr("id", ([date, ]) => "gradientColorId2" + date)
.attr("gradientUnits", "userSpaceOnUse")
.attr("x1", 0)
.attr("x2", width)
.selectAll("stop")
.data(([, group]) => group)
.join("stop")
.attr("offset", d => xScale(d.time) / width)
.attr("stop-color", "#87B8E8")
.attr("stop-opacity", d => opacityScale(d.category));
const area = d3
.area()
.curve(d3.curveBasis)
.x((d) => xScale(d.time))
.y0(d => yScale(d.y0))
.y1((d) => yScale(d.y1));
const path = svg
.selectAll("path")
.data(d3.group(lineData, (d) => d.date))
.join("path")
.attr("fill", ([date, ]) => "url(#gradientColorId2" + date + ")")
.attr("d", ([, group]) => area(group))
.style("filter", "url(#glow)");
return svg.node();
}