Skip to content

Layered Area Chart

ts
Frame([
  ..._(streamgraphData)
    .groupBy("c")
    .flatMap((items, c) =>
      StackX(
        { spacing: 0, sharedScale: true },
        items.map((d) =>
          Rect({
            name: `${c}-${d.x}`,
            x: v(d.x),
            h: v(d.y),
            w: 0,
            fill: v(c),
          })
        )
      )
    )
    .value(),
  ..._(streamgraphData)
    .groupBy("c")
    .map((items, c) =>
      ConnectX(
        {
          interpolation: "linear",
          // opacity: 0.7,
          // mixBlendMode: "normal",
          opacity: 0.7,
        },
        items.map((d) => Ref(`${c}-${d.x}`))
      )
    )
    .value(),
]).render(root, { w: 500, h: 300 });