TanStack
Catalog

Anscombe quartet small multiples

small multiples

TanStack

benchmarks/conformance/cases/facets-anscombe/tanstack.ts
import { defineChart, dot, facet } from '@tanstack/charts'
import { scaleLinear } from 'd3-scale'
import { quartetData } from '../../shared/data'
import { tanstackMount } from '../../shared/mount'
import type { ConformanceInput } from '../../types'

const definition = defineChart<ConformanceInput>()(() => {
  const rows = quartetData()

  return {
    marks: [
      facet(rows, {
        by: 'set',
        columns: 4,
        gap: 12,
        label: (set) => String(set),
        chart: (facetRows) => ({
          marks: [
            dot(facetRows, {
              x: 'x',
              y: 'y',
              key: 'id',
              r: 3.5,
              fill: '#2563eb',
            }),
          ],
          x: {
            scale: scaleLinear().domain([3, 20]),
            grid: true,
            ticks: 5,
          },
          y: {
            scale: scaleLinear().domain([2, 14]),
            grid: true,
            ticks: 4,
          },
        }),
      }),
    ],
    guides: false,
    margin: 0,
    x: null,
    y: null,
  }
})

export const mount = tanstackMount(
  definition,
  "Anscombe's quartet small multiples",
)