Skip to content

Ribbon Chart

ts
Frame([
  StackX({ spacing: 64, sharedScale: true },
    For(groupBy(seafood, "lake"), (d) =>
      StackY({ spacing: 2 },
        For(_(d).orderBy("count", "desc"), (d) =>
          Rect({ name: `${d.lake}-${d.species}`, w: 16, h: v(d.count), fill: v(d.species) }))))),
    For(groupBy(seafood, "species"), (items) =>
      ConnectX({ opacity: 0.8 },
        For(items, (d) => Ref(`${d.lake}-${d.species}`)))),
  ]).render(root, { w: 500, h: 300 });