ggts is a fast agent-native implementation of the grammar of graphics in TypeScript

10,000 points. First render · SVG · milliseconds. Lower is better. ggts core SVG: 91.6 ms; LayerCake: 329.4 ms; TanStack: 335.6 ms; Unovis: 427.3 ms; SveltePlot: 3,955.7 ms. 10,000 points. First render · SVG · milliseconds. Lower is better. ggts core SVG: 91.6 ms; LayerCake: 329.4 ms; TanStack: 335.6 ms; Unovis: 427.3 ms; SveltePlot: 3,955.7 ms.

Benchmarks on GitHub

Plot of Body mass g by Flipper length mm170170180180190190200200210210220220230230250025003000300035003500400040004500450050005000550055006000600065006500Flipper length mmBody mass gspeciesAdelieGentooChinstrap
Plot of Body mass g by Flipper length mm170170180180190190200200210210220220230230250025003000300035003500400040004500450050005000550055006000600065006500Flipper length mmBody mass gspeciesAdelieGentooChinstrap

Frameworks for builders, JSON for embedded agents.

Frameworks for when humans need them. CLI validation for when embedded agents need to write JSON specs.

<script lang="ts">
  import { GeomJitter, GeomSmooth, GGPlot, GuideLegend, Inspect, Labs } from "@ggts-sh/svelte";
  import { palmerPenguins } from "@ggts-sh/core/data";
</script>

<GGPlot
  data={palmerPenguins}
  aes={{ x: "flipperLengthMm", y: "bodyMassG", color: "species" }}
  width={640}
  height={400}
>
  <GeomJitter alpha={0.88} />
  <GeomSmooth method="loess" span={0.75} degree={1} se={false} />
  <GuideLegend channel="color" focus />
  <Labs x="Flipper length mm" y="Body mass g" color="species" />
  <Inspect mode="xy" pin maxDistance={24} />
</GGPlot>

Docs