Source

44 chart lines · 1 file · 1.2 kBBenchmark harness excluded · shared/mount.ts

Flare package hierarchy252 records · CSV · 8.0 kB
@charts-poc/demo-data/flare

Selection: Complete published snapshot

name
string
size
number | null

Flare visualization toolkit@observablehq/sample-datasets@1.0.1 · revision 732c0148de74 · flare.csv · ISC distribution; upstream source credited · SHA-256 704349b51b70Pinned snapshot

cases/53-log-scale-scatter/tanstack.ts44 lines · entry
cases/53-log-scale-scatter/tanstack.ts
import { flare } from '@charts-poc/demo-data/flare'
import { defineChart, dot } from '@tanstack/charts'
import { scaleLinear, scaleLog } from 'd3-scale'
import { tanstackMount } from '../../shared/mount'
import type { FlareRow } from '@charts-poc/demo-data/flare'
import type { ConformanceInput } from '../../types'

type SizedFlareRow = FlareRow & { readonly size: number }

const definition = (input: ConformanceInput) => {
  const rows = flare
    .filter((row): row is SizedFlareRow => row.size !== null)
    .slice(input.revision * 8, input.revision * 8 + 200)

  return defineChart({
    marks: [
      dot(rows, {
        x: 'size',
        y: (row) => row.name.split('.').length - 1,
        r: 3.5,
        fill: '#f97316',
        stroke: '#9a3412',
        strokeWidth: 0.75,
      }),
    ],
    margin: {
      top: 16,
      right: 20,
      bottom: 40,
      left: 50,
    },
    x: {
      scale: scaleLog().domain([200, 30_000]),
      grid: true,
      axis: { label: 'Class size' },
    },
    y: { scale: scaleLinear, grid: true, axis: { label: 'Hierarchy depth' } },
  })
}

export const mount = tanstackMount(
  definition,
  'Flare class size on a logarithmic scale',
)