- Prop
points- Type
ChartScatterPoint[]- Default
- —
- Requirement
- required
- Description
- —
ScatterChart
React example follows below.
Vue example follows below.
Angular example follows below.
Svelte example follows below.
Solid example follows below.
- surface
- —
- marks
- —
- size
- —
- value
- —
ts
import { useState } from "react";const scatterChartFixture = { id: "scatter-chart", points: [ { x: 8, y: 142, label: "Brand search", group: "Brand" }, { x: 14, y: 218, label: "Homepage takeover", group: "Brand" }, { x: 18, y: 326, label: "Spring launch", group: "Brand" }, { x: 22, y: 368, label: "Retail window", group: "Brand" }, { x: 26, y: 404, label: "Sustainability", group: "Brand" }, { x: 30, y: 441, label: "Founder film", group: "Brand" }, { x: 34, y: 478, label: "Summer video", group: "Brand" }, { x: 38, y: 502, label: "Press tour", group: "Brand" }, { x: 41, y: 519, label: "Podcast series", group: "Brand" }, { x: 9, y: 196, label: "Shopping ads", group: "Performance" }, { x: 12, y: 284, label: "Competitor search", group: "Performance" }, { x: 15, y: 328, label: "Brand + generic", group: "Performance" }, { x: 17, y: 372, label: "Non-brand search", group: "Performance" }, { x: 20, y: 408, label: "PMax", group: "Performance" }, { x: 23, y: 451, label: "Retargeting", group: "Performance" }, { x: 26, y: 494, label: "Lookalike", group: "Performance" }, { x: 29, y: 536, label: "Partner display", group: "Performance" }, { x: 33, y: 574, label: "Comparison sites", group: "Performance" }, { x: 37, y: 612, label: "Affiliate offer", group: "Performance" }, { x: 42, y: 648, label: "App install", group: "Performance" }, { x: 46, y: 681, label: "Category search", group: "Performance" }, { x: 11, y: 88, label: "Newsletter", group: "Owned" }, { x: 16, y: 154, label: "Lifecycle SMS", group: "Owned" }, { x: 21, y: 212, label: "Win-back", group: "Owned" }, { x: 27, y: 268, label: "Referral bonus", group: "Owned" }, { x: 32, y: 306, label: "Loyalty drop", group: "Owned" }, { x: 39, y: 348, label: "App push", group: "Owned" }, ], ariaLabel: "Qualified leads versus campaign spend in thousands of pounds, Q2 2026", tooltip: true, legend: true, xAxisLabel: "Spend (£k)", yAxisLabel: "Qualified leads",}; import { ScatterChart } from "@grassroot/charts-react";import { VariantToggle } from "./VariantToggle"; export default function ScatterChartDemo() { const [ellipses, setEllipses] = useState<"none" | "confidence">("none"); return ( <div> <VariantToggle label="Uncertainty" options={[ { value: "none" as const, label: "Points" }, { value: "confidence" as const, label: "Ellipses" }, ]} value={ellipses} onChange={setEllipses} /> <ScatterChart {...scatterChartFixture} ellipses={ellipses} /> </div> );}- surface
- —
- marks
- —
- size
- —
- value
- —
ts
<script setup lang="ts">import { ref } from "vue";const scatterChartFixture = { id: "scatter-chart", points: [ { x: 8, y: 142, label: "Brand search", group: "Brand" }, { x: 14, y: 218, label: "Homepage takeover", group: "Brand" }, { x: 18, y: 326, label: "Spring launch", group: "Brand" }, { x: 22, y: 368, label: "Retail window", group: "Brand" }, { x: 26, y: 404, label: "Sustainability", group: "Brand" }, { x: 30, y: 441, label: "Founder film", group: "Brand" }, { x: 34, y: 478, label: "Summer video", group: "Brand" }, { x: 38, y: 502, label: "Press tour", group: "Brand" }, { x: 41, y: 519, label: "Podcast series", group: "Brand" }, { x: 9, y: 196, label: "Shopping ads", group: "Performance" }, { x: 12, y: 284, label: "Competitor search", group: "Performance" }, { x: 15, y: 328, label: "Brand + generic", group: "Performance" }, { x: 17, y: 372, label: "Non-brand search", group: "Performance" }, { x: 20, y: 408, label: "PMax", group: "Performance" }, { x: 23, y: 451, label: "Retargeting", group: "Performance" }, { x: 26, y: 494, label: "Lookalike", group: "Performance" }, { x: 29, y: 536, label: "Partner display", group: "Performance" }, { x: 33, y: 574, label: "Comparison sites", group: "Performance" }, { x: 37, y: 612, label: "Affiliate offer", group: "Performance" }, { x: 42, y: 648, label: "App install", group: "Performance" }, { x: 46, y: 681, label: "Category search", group: "Performance" }, { x: 11, y: 88, label: "Newsletter", group: "Owned" }, { x: 16, y: 154, label: "Lifecycle SMS", group: "Owned" }, { x: 21, y: 212, label: "Win-back", group: "Owned" }, { x: 27, y: 268, label: "Referral bonus", group: "Owned" }, { x: 32, y: 306, label: "Loyalty drop", group: "Owned" }, { x: 39, y: 348, label: "App push", group: "Owned" }, ], ariaLabel: "Qualified leads versus campaign spend in thousands of pounds, Q2 2026", tooltip: true, legend: true, xAxisLabel: "Spend (£k)", yAxisLabel: "Qualified leads",}; import { ScatterChart } from "@grassroot/charts-vue";import VariantToggle from "./VariantToggle.vue"; const ellipses = ref<"none" | "confidence">("none");const ellipseModes = [ { value: "none", label: "Points" }, { value: "confidence", label: "Ellipses" },];</script><template> <div> <VariantToggle v-model="ellipses" label="Uncertainty" :options="ellipseModes" /><ScatterChart v-bind="scatterChartFixture" :ellipses="ellipses" /> </div></template>- surface
- —
- marks
- —
- size
- —
- value
- —
ts
import { ChangeDetectionStrategy, Component, signal } from "@angular/core";const scatterChartFixture = { id: "scatter-chart", points: [ { x: 8, y: 142, label: "Brand search", group: "Brand" }, { x: 14, y: 218, label: "Homepage takeover", group: "Brand" }, { x: 18, y: 326, label: "Spring launch", group: "Brand" }, { x: 22, y: 368, label: "Retail window", group: "Brand" }, { x: 26, y: 404, label: "Sustainability", group: "Brand" }, { x: 30, y: 441, label: "Founder film", group: "Brand" }, { x: 34, y: 478, label: "Summer video", group: "Brand" }, { x: 38, y: 502, label: "Press tour", group: "Brand" }, { x: 41, y: 519, label: "Podcast series", group: "Brand" }, { x: 9, y: 196, label: "Shopping ads", group: "Performance" }, { x: 12, y: 284, label: "Competitor search", group: "Performance" }, { x: 15, y: 328, label: "Brand + generic", group: "Performance" }, { x: 17, y: 372, label: "Non-brand search", group: "Performance" }, { x: 20, y: 408, label: "PMax", group: "Performance" }, { x: 23, y: 451, label: "Retargeting", group: "Performance" }, { x: 26, y: 494, label: "Lookalike", group: "Performance" }, { x: 29, y: 536, label: "Partner display", group: "Performance" }, { x: 33, y: 574, label: "Comparison sites", group: "Performance" }, { x: 37, y: 612, label: "Affiliate offer", group: "Performance" }, { x: 42, y: 648, label: "App install", group: "Performance" }, { x: 46, y: 681, label: "Category search", group: "Performance" }, { x: 11, y: 88, label: "Newsletter", group: "Owned" }, { x: 16, y: 154, label: "Lifecycle SMS", group: "Owned" }, { x: 21, y: 212, label: "Win-back", group: "Owned" }, { x: 27, y: 268, label: "Referral bonus", group: "Owned" }, { x: 32, y: 306, label: "Loyalty drop", group: "Owned" }, { x: 39, y: 348, label: "App push", group: "Owned" }, ], ariaLabel: "Qualified leads versus campaign spend in thousands of pounds, Q2 2026", tooltip: true, legend: true, xAxisLabel: "Spend (£k)", yAxisLabel: "Qualified leads",}; import { GrassrootScatterChart } from "@grassroot/charts-angular";import { VariantToggleComponent } from "./VariantToggle.component";@Component({ selector: "app-scatter-chart-chart-demo", standalone: true, imports: [GrassrootScatterChart, VariantToggleComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `<app-variant-toggle label="Uncertainty" [options]="ellipseModes" [value]="ellipses()" (valueChange)="setEllipses($event)" /><grassroot-scatter-chart [ellipses]="ellipses()" [points]="fixture.points" [xAxisLabel]="fixture.xAxisLabel" [yAxisLabel]="fixture.yAxisLabel" [ariaLabel]="fixture.ariaLabel" [tooltip]="fixture.tooltip" />`,})export class ScatterChartDemoComponent { readonly fixture = scatterChartFixture; readonly ellipses = signal<"none" | "confidence">("none"); readonly ellipseModes = [ { value: "none", label: "Points" }, { value: "confidence", label: "Ellipses" }, ] as const; setEllipses(value: string): void { if (value === "none" || value === "confidence") this.ellipses.set(value); }}export default ScatterChartDemoComponent;- surface
- —
- marks
- —
- size
- —
- value
- —
ts
<script lang="ts"> const scatterChartFixture = { id: "scatter-chart", points: [ { x: 8, y: 142, label: "Brand search", group: "Brand" }, { x: 14, y: 218, label: "Homepage takeover", group: "Brand" }, { x: 18, y: 326, label: "Spring launch", group: "Brand" }, { x: 22, y: 368, label: "Retail window", group: "Brand" }, { x: 26, y: 404, label: "Sustainability", group: "Brand" }, { x: 30, y: 441, label: "Founder film", group: "Brand" }, { x: 34, y: 478, label: "Summer video", group: "Brand" }, { x: 38, y: 502, label: "Press tour", group: "Brand" }, { x: 41, y: 519, label: "Podcast series", group: "Brand" }, { x: 9, y: 196, label: "Shopping ads", group: "Performance" }, { x: 12, y: 284, label: "Competitor search", group: "Performance" }, { x: 15, y: 328, label: "Brand + generic", group: "Performance" }, { x: 17, y: 372, label: "Non-brand search", group: "Performance" }, { x: 20, y: 408, label: "PMax", group: "Performance" }, { x: 23, y: 451, label: "Retargeting", group: "Performance" }, { x: 26, y: 494, label: "Lookalike", group: "Performance" }, { x: 29, y: 536, label: "Partner display", group: "Performance" }, { x: 33, y: 574, label: "Comparison sites", group: "Performance" }, { x: 37, y: 612, label: "Affiliate offer", group: "Performance" }, { x: 42, y: 648, label: "App install", group: "Performance" }, { x: 46, y: 681, label: "Category search", group: "Performance" }, { x: 11, y: 88, label: "Newsletter", group: "Owned" }, { x: 16, y: 154, label: "Lifecycle SMS", group: "Owned" }, { x: 21, y: 212, label: "Win-back", group: "Owned" }, { x: 27, y: 268, label: "Referral bonus", group: "Owned" }, { x: 32, y: 306, label: "Loyalty drop", group: "Owned" }, { x: 39, y: 348, label: "App push", group: "Owned" }, ], ariaLabel: "Qualified leads versus campaign spend in thousands of pounds, Q2 2026", tooltip: true, legend: true, xAxisLabel: "Spend (£k)", yAxisLabel: "Qualified leads", }; import { ScatterChart } from "@grassroot/charts-svelte"; import VariantToggle from "./VariantToggle.svelte"; let ellipses = $state<"none" | "confidence">("none"); const ellipseModes = [ { value: "none", label: "Points" }, { value: "confidence", label: "Ellipses" }, ];</script> <div> <VariantToggle label="Uncertainty" options={ellipseModes} value={ellipses} onchange={(value) => (ellipses = value as typeof ellipses)} /> <ScatterChart {...scatterChartFixture} {ellipses} /></div>- surface
- —
- marks
- —
- size
- —
- value
- —
ts
/** @jsxImportSource solid-js */import { createSignal } from "solid-js";const scatterChartFixture = { id: "scatter-chart", points: [ { x: 8, y: 142, label: "Brand search", group: "Brand" }, { x: 14, y: 218, label: "Homepage takeover", group: "Brand" }, { x: 18, y: 326, label: "Spring launch", group: "Brand" }, { x: 22, y: 368, label: "Retail window", group: "Brand" }, { x: 26, y: 404, label: "Sustainability", group: "Brand" }, { x: 30, y: 441, label: "Founder film", group: "Brand" }, { x: 34, y: 478, label: "Summer video", group: "Brand" }, { x: 38, y: 502, label: "Press tour", group: "Brand" }, { x: 41, y: 519, label: "Podcast series", group: "Brand" }, { x: 9, y: 196, label: "Shopping ads", group: "Performance" }, { x: 12, y: 284, label: "Competitor search", group: "Performance" }, { x: 15, y: 328, label: "Brand + generic", group: "Performance" }, { x: 17, y: 372, label: "Non-brand search", group: "Performance" }, { x: 20, y: 408, label: "PMax", group: "Performance" }, { x: 23, y: 451, label: "Retargeting", group: "Performance" }, { x: 26, y: 494, label: "Lookalike", group: "Performance" }, { x: 29, y: 536, label: "Partner display", group: "Performance" }, { x: 33, y: 574, label: "Comparison sites", group: "Performance" }, { x: 37, y: 612, label: "Affiliate offer", group: "Performance" }, { x: 42, y: 648, label: "App install", group: "Performance" }, { x: 46, y: 681, label: "Category search", group: "Performance" }, { x: 11, y: 88, label: "Newsletter", group: "Owned" }, { x: 16, y: 154, label: "Lifecycle SMS", group: "Owned" }, { x: 21, y: 212, label: "Win-back", group: "Owned" }, { x: 27, y: 268, label: "Referral bonus", group: "Owned" }, { x: 32, y: 306, label: "Loyalty drop", group: "Owned" }, { x: 39, y: 348, label: "App push", group: "Owned" }, ], ariaLabel: "Qualified leads versus campaign spend in thousands of pounds, Q2 2026", tooltip: true, legend: true, xAxisLabel: "Spend (£k)", yAxisLabel: "Qualified leads",}; import { ScatterChart } from "@grassroot/charts-solid";import { VariantToggle } from "./VariantToggle";export default function ScatterChartDemo() { const [ellipses, setEllipses] = createSignal<"none" | "confidence">("none"); const ellipseModes = [ { value: "none", label: "Points" }, { value: "confidence", label: "Ellipses" }, ]; return ( <div> <VariantToggle label="Uncertainty" options={ellipseModes} value={ellipses} onChange={(value) => setEllipses(value as "none" | "confidence")} /> <ScatterChart {...scatterChartFixture} ellipses={ellipses()} /> </div> );}Installation
API Reference
Import
import { useState } from "react";
import { ScatterChart } from "@grassroot/charts-react";
import { VariantToggle } from "./VariantToggle";
Props
Prop
Type
Default
Requirement
Description
pointsChartScatterPoint[]—
required
—
xMaxnumber | undefined—
optional
—
yMaxnumber | undefined—
optional
—
xDomainChartNumericDomain | undefined—
optional
—
yDomainChartNumericDomain | undefined—
optional
—
xAxisChartAxisOptions<number> | undefined—
optional
—
yAxisChartAxisOptions<number> | undefined—
optional
—
showGridboolean | undefined—
optional
—
formatXTick((value: number, index: number) => string) | undefined—
optional
—
formatYTick((value: number, index: number) => string) | undefined—
optional
—
formatXValue((value: number, index: number) => string) | undefined—
optional
—
formatYValue((value: number, index: number) => string) | undefined—
optional
—
localestring | readonly string[] | undefined—
optional
—
referenceLinesreadonly ReferenceLine[] | undefined—
optional
—
- Prop
xMax- Type
number | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
yMax- Type
number | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
xDomain- Type
ChartNumericDomain | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
yDomain- Type
ChartNumericDomain | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
xAxis- Type
ChartAxisOptions<number> | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
yAxis- Type
ChartAxisOptions<number> | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
showGrid- Type
boolean | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
formatXTick- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
formatYTick- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
formatXValue- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
formatYValue- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
locale- Type
string | readonly string[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
referenceLines- Type
readonly ReferenceLine[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
referenceBands- Type
readonly ReferenceBand[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
xAxisLabel- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
yAxisLabel- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
legend- Type
boolean | LegendConfig | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
ellipses- Type
"none" | "confidence" | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
layout- Type
"standard" | "cartogram" | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
referenceLine- Type
{ slope?: number; intercept?: number; color?: string; } | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
referencePolygon- Type
readonly (readonly [number, number])[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
speed- Type
number | undefined- Default
- —
- Requirement
- optional
- Description
- Playback-speed multiplier for entrance/ambient motion.
- Prop
morphDurationMs- Type
number | undefined- Default
- —
- Requirement
- optional
- Description
- How long a dataset change tweens, in ms.
- Prop
replayToken- Type
string | number | undefined- Default
- —
- Requirement
- optional
- Description
- Changing this value replays the entrance animation.
- Prop
selectionMode- Type
SelectionMode | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
selectedIds- Type
SelectionValue | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
defaultSelectedIds- Type
SelectionValue | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
onSelectedIdsChange- Type
((ids: readonly string[]) => void) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
brushDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
defaultBrushDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
onBrushDomainChange- Type
((domain: ChartXDomain) => void) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
zoomDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
defaultZoomDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
onZoomDomainChange- Type
((domain: ChartXDomain) => void) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
zoomOnBrush- Type
boolean | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
renderer- Type
import("@grassroot/core").ChartRenderer | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
className- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
theme- Type
import("@grassroot/theme").PartialChartTheme | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
animation- Type
import("@grassroot/theme").ChartAnimationInput | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
title- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
description- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
ariaLabel- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
keyboardNavigation- Type
boolean | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
interactive- Type
boolean | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
tooltip- Type
boolean | import("../../types").TooltipConfig<ChartScatterPoint> | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
crosshair- Type
boolean | import("../../types").CrosshairConfig | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
activePoint- Type
ActivePoint<ChartScatterPoint> | null | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
defaultActivePoint- Type
ActivePoint<ChartScatterPoint> | null | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
onActivePointChange- Type
((point: ActivePoint<ChartScatterPoint> | null) => void) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
hiddenSeries- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
defaultHiddenSeries- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
onHiddenSeriesChange- Type
((hidden: readonly string[]) => void) | undefined- Default
- —
- Requirement
- optional
- Description
- —
Events
| Event | Payload |
|---|---|
onSelectedIdsChange | ((ids: readonly string[]) => void) | undefined |
onBrushDomainChange | ((domain: ChartXDomain) => void) | undefined |
onZoomDomainChange | ((domain: ChartXDomain) => void) | undefined |
onActivePointChange | ((point: ActivePoint<ChartScatterPoint> | null) => void) | undefined |
onHiddenSeriesChange | ((hidden: readonly string[]) => void) | undefined |
Content regions
childrendataSummary
Native attributes
Standard DOM and ARIA attributes not listed above spread onto the root element.
Import
import { ref } from "vue";
import { ScatterChart } from "@grassroot/charts-vue";
import VariantToggle from "./VariantToggle.vue";
Props
Prop
Type
Default
Requirement
pointsreadonly PointDatum[]—
required
colorstring | undefined—
optional
xMaxnumber | undefined—
optional
yMaxnumber | undefined—
optional
xDomainChartNumericDomain | undefined—
optional
yDomainChartNumericDomain | undefined—
optional
xAxisChartAxisOptions<number> | undefined—
optional
yAxisChartAxisOptions<number> | undefined—
optional
showGridboolean | undefinedfalseoptional
formatXTick((value: number, index: number) => string) | undefined—
optional
formatYTick((value: number, index: number) => string) | undefined—
optional
formatXValue((value: number, index: number) => string) | undefined—
optional
formatYValue((value: number, index: number) => string) | undefined—
optional
localestring | readonly string[] | undefined—
optional
- Prop
points- Type
readonly PointDatum[]- Default
- —
- Requirement
- required
- Prop
color- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
xMax- Type
number | undefined- Default
- —
- Requirement
- optional
- Prop
yMax- Type
number | undefined- Default
- —
- Requirement
- optional
- Prop
xDomain- Type
ChartNumericDomain | undefined- Default
- —
- Requirement
- optional
- Prop
yDomain- Type
ChartNumericDomain | undefined- Default
- —
- Requirement
- optional
- Prop
xAxis- Type
ChartAxisOptions<number> | undefined- Default
- —
- Requirement
- optional
- Prop
yAxis- Type
ChartAxisOptions<number> | undefined- Default
- —
- Requirement
- optional
- Prop
showGrid- Type
boolean | undefined- Default
false- Requirement
- optional
- Prop
formatXTick- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Prop
formatYTick- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Prop
formatXValue- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Prop
formatYValue- Type
((value: number, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Prop
locale- Type
string | readonly string[] | undefined- Default
- —
- Requirement
- optional
- Prop
xAxisLabel- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
yAxisLabel- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
ellipses- Type
"none" | "confidence" | undefined- Default
- —
- Requirement
- optional
- Prop
layout- Type
"standard" | "cartogram" | undefined- Default
- —
- Requirement
- optional
- Prop
referenceLine- Type
{ readonly slope?: number; readonly intercept?: number; readonly color?: string; } | undefined- Default
- —
- Requirement
- optional
- Prop
referencePolygon- Type
readonly (readonly [number, number])[] | undefined- Default
- —
- Requirement
- optional
- Prop
referenceLines- Type
readonly ReferenceLine[] | undefined- Default
- —
- Requirement
- optional
- Prop
referenceBands- Type
readonly ReferenceBand[] | undefined- Default
- —
- Requirement
- optional
- Prop
renderer- Type
ChartRenderer | undefined- Default
- —
- Requirement
- optional
- Prop
ariaLabel- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
className- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
title- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
description- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
theme- Type
PartialChartTheme | undefined- Default
- —
- Requirement
- optional
- Prop
animation- Type
ChartAnimationInput | undefined- Default
- —
- Requirement
- optional
- Prop
interactive- Type
boolean | undefined- Default
true- Requirement
- optional
- Prop
crosshair- Type
boolean | CrosshairBehaviorConfig | undefined- Default
true- Requirement
- optional
- Prop
keyboardNavigation- Type
boolean | undefined- Default
true- Requirement
- optional
- Prop
tooltip- Type
boolean | TooltipBehaviorConfig | undefined- Default
true- Requirement
- optional
- Prop
legend- Type
boolean | LegendConfig | undefined- Default
false- Requirement
- optional
- Prop
hiddenSeries- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Prop
defaultHiddenSeries- Type
readonly string[] | undefined- Default
() => []- Requirement
- optional
- Prop
activePoint- Type
ActivePoint<PointDatum> | null | undefined- Default
- —
- Requirement
- optional
- Prop
defaultActivePoint- Type
ActivePoint<PointDatum> | null | undefined- Default
null- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode | undefined- Default
"none"- Requirement
- optional
- Prop
selectedIds- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Prop
defaultSelectedIds- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Prop
brushDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Prop
defaultBrushDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Prop
zoomDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Prop
defaultZoomDomain- Type
ChartXDomain | undefined- Default
- —
- Requirement
- optional
- Prop
zoomOnBrush- Type
boolean | undefined- Default
false- Requirement
- optional
- Prop
speed- Type
number | undefined- Default
- —
- Requirement
- optional
- Prop
morphDurationMs- Type
number | undefined- Default
- —
- Requirement
- optional
- Prop
replayToken- Type
string | number | undefined- Default
- —
- Requirement
- optional
Events
| Event | Payload |
|---|---|
activePointChange | [point: ActivePoint<PointDatum> | null] |
hiddenSeriesChange | [ids: readonly string[]] |
selectedIdsChange | [ids: readonly string[]] |
brushDomainChange | [domain: ChartXDomain] |
zoomDomainChange | [domain: ChartXDomain] |
Content regions
dataSummarydefault
Import
import { ChangeDetectionStrategy, Component, signal } from "@angular/core";
import { GrassrootScatterChart } from "@grassroot/charts-angular";
import { VariantToggleComponent } from "./VariantToggle.component";
Props
Prop
Type
Default
Requirement
rendererChartRenderer—
optional
gpuBackendChartGpuBackend—
optional
rendererStrategyPartial<ChartRendererStrategy>—
optional
renderPlanMode"svg" | "host""host"optional
ariaLabelstring—
optional
titlestring—
optional
descriptionstring—
optional
themePartialChartTheme—
optional
animationChartAnimationInput—
optional
interactivebooleantrueoptional
tooltipboolean | TooltipBehaviorConfigtrueoptional
legendboolean | LegendConfig—
optional
- Prop
renderer- Type
ChartRenderer- Default
- —
- Requirement
- optional
- Prop
gpuBackend- Type
ChartGpuBackend- Default
- —
- Requirement
- optional
- Prop
rendererStrategy- Type
Partial<ChartRendererStrategy>- Default
- —
- Requirement
- optional
- Prop
renderPlanMode- Type
"svg" | "host"- Default
"host"- Requirement
- optional
- Prop
ariaLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
title- Type
string- Default
- —
- Requirement
- optional
- Prop
description- Type
string- Default
- —
- Requirement
- optional
- Prop
theme- Type
PartialChartTheme- Default
- —
- Requirement
- optional
- Prop
animation- Type
ChartAnimationInput- Default
- —
- Requirement
- optional
- Prop
interactive- Type
boolean- Default
true- Requirement
- optional
- Prop
keyboardNavigation- Type
boolean- Default
true- Requirement
- optional
- Prop
tooltip- Type
boolean | TooltipBehaviorConfig- Default
true- Requirement
- optional
- Prop
legend- Type
boolean | LegendConfig- Default
- —
- Requirement
- optional
- Prop
hiddenSeries- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
defaultHiddenSeries- Type
readonly string[]- Default
[]- Requirement
- optional
- Prop
activeDatum- Type
string | null- Default
- —
- Requirement
- optional
- Prop
defaultActiveDatum- Type
string | null- Default
null- Requirement
- optional
- Prop
speed- Type
number- Default
- —
- Requirement
- optional
- Prop
morphDurationMs- Type
number- Default
- —
- Requirement
- optional
- Prop
replayToken- Type
string | number- Default
- —
- Requirement
- optional
- Prop
points- Type
readonly PointDatum[]- Default
- —
- Requirement
- required
- Prop
color- Type
string- Default
- —
- Requirement
- optional
- Prop
xMax- Type
number- Default
- —
- Requirement
- optional
- Prop
yMax- Type
number- Default
- —
- Requirement
- optional
- Prop
xDomain- Type
ChartNumericDomain- Default
- —
- Requirement
- optional
- Prop
yDomain- Type
ChartNumericDomain- Default
- —
- Requirement
- optional
- Prop
xAxis- Type
ChartAxisOptions<number>- Default
- —
- Requirement
- optional
- Prop
yAxis- Type
ChartAxisOptions<number>- Default
- —
- Requirement
- optional
- Prop
showGrid- Type
boolean- Default
false- Requirement
- optional
- Prop
formatXTick- Type
(value: number, index: number) => string- Default
- —
- Requirement
- optional
- Prop
formatYTick- Type
(value: number, index: number) => string- Default
- —
- Requirement
- optional
- Prop
formatXValue- Type
ScatterChartOptions["formatXValue"]- Default
- —
- Requirement
- optional
- Prop
formatYValue- Type
ScatterChartOptions["formatYValue"]- Default
- —
- Requirement
- optional
- Prop
locale- Type
ScatterChartOptions["locale"]- Default
- —
- Requirement
- optional
- Prop
referenceLines- Type
ScatterChartOptions["referenceLines"]- Default
- —
- Requirement
- optional
- Prop
referenceBands- Type
ScatterChartOptions["referenceBands"]- Default
- —
- Requirement
- optional
- Prop
xAxisLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
yAxisLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
crosshair- Type
boolean | CrosshairBehaviorConfig- Default
true- Requirement
- optional
- Prop
ellipses- Type
ScatterChartOptions["ellipses"]- Default
- —
- Requirement
- optional
- Prop
layout- Type
ScatterChartOptions["layout"]- Default
- —
- Requirement
- optional
- Prop
referenceLine- Type
ScatterChartOptions["referenceLine"]- Default
- —
- Requirement
- optional
- Prop
referencePolygon- Type
ScatterChartOptions["referencePolygon"]- Default
- —
- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode- Default
"none"- Requirement
- optional
- Prop
selectedIds- Type
SelectionValue- Default
- —
- Requirement
- optional
- Prop
defaultSelectedIds- Type
SelectionValue- Default
- —
- Requirement
- optional
- Prop
onSelectedIdsChange- Type
(ids: SelectionValue) => void- Default
- —
- Requirement
- optional
- Prop
brushDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
defaultBrushDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
onBrushDomainChange- Type
(domain: ChartXDomain) => void- Default
- —
- Requirement
- optional
- Prop
zoomDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
defaultZoomDomain- Type
ChartXDomain- Default
null- Requirement
- optional
- Prop
onZoomDomainChange- Type
(domain: ChartXDomain) => void- Default
- —
- Requirement
- optional
- Prop
zoomOnBrush- Type
boolean- Default
false- Requirement
- optional
- Prop
activePoint- Type
ActivePoint<PointDatum> | null- Default
- —
- Requirement
- optional
- Prop
defaultActivePoint- Type
ActivePoint<PointDatum> | null- Default
null- Requirement
- optional
Events
| Event | Payload |
|---|---|
activeDatumChange | string | null |
hiddenSeriesChange | readonly string[] |
selectedIdsChange | readonly string[] |
brushDomainChange | ChartXDomain |
zoomDomainChange | ChartXDomain |
activePointChange | ActivePoint<PointDatum> | null |
Content regions
dataSummarydefault
Import
import { ScatterChart } from "@grassroot/charts-svelte";
import VariantToggle from "./VariantToggle.svelte";
Props
Prop
Type
Default
Requirement
pointsreadonly PointDatum[]—
required
colorstring—
optional
xMaxnumber—
optional
yMaxnumber—
optional
xDomainChartNumericDomain—
optional
yDomainChartNumericDomain—
optional
xAxisScatterChartOptions["xAxis"]—
optional
yAxisScatterChartOptions["yAxis"]—
optional
showGridboolean—
optional
formatXTickScatterChartOptions["formatXTick"]—
optional
formatYTickScatterChartOptions["formatYTick"]—
optional
formatXValueScatterChartOptions["formatXValue"]—
optional
formatYValueScatterChartOptions["formatYValue"]—
optional
localeScatterChartOptions["locale"]—
optional
- Prop
points- Type
readonly PointDatum[]- Default
- —
- Requirement
- required
- Prop
color- Type
string- Default
- —
- Requirement
- optional
- Prop
xMax- Type
number- Default
- —
- Requirement
- optional
- Prop
yMax- Type
number- Default
- —
- Requirement
- optional
- Prop
xDomain- Type
ChartNumericDomain- Default
- —
- Requirement
- optional
- Prop
yDomain- Type
ChartNumericDomain- Default
- —
- Requirement
- optional
- Prop
xAxis- Type
ScatterChartOptions["xAxis"]- Default
- —
- Requirement
- optional
- Prop
yAxis- Type
ScatterChartOptions["yAxis"]- Default
- —
- Requirement
- optional
- Prop
showGrid- Type
boolean- Default
- —
- Requirement
- optional
- Prop
formatXTick- Type
ScatterChartOptions["formatXTick"]- Default
- —
- Requirement
- optional
- Prop
formatYTick- Type
ScatterChartOptions["formatYTick"]- Default
- —
- Requirement
- optional
- Prop
formatXValue- Type
ScatterChartOptions["formatXValue"]- Default
- —
- Requirement
- optional
- Prop
formatYValue- Type
ScatterChartOptions["formatYValue"]- Default
- —
- Requirement
- optional
- Prop
locale- Type
ScatterChartOptions["locale"]- Default
- —
- Requirement
- optional
- Prop
referenceLines- Type
ScatterChartOptions["referenceLines"]- Default
- —
- Requirement
- optional
- Prop
referenceBands- Type
ScatterChartOptions["referenceBands"]- Default
- —
- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode- Default
"none"- Requirement
- optional
- Prop
selectedIds- Type
SelectionValue- Default
- —
- Requirement
- optional
- Prop
defaultSelectedIds- Type
SelectionValue- Default
- —
- Requirement
- optional
- Prop
onSelectedIdsChange- Type
(ids: SelectionValue) => void- Default
- —
- Requirement
- optional
- Prop
brushDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
defaultBrushDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
onBrushDomainChange- Type
(domain: ChartXDomain) => void- Default
- —
- Requirement
- optional
- Prop
zoomDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
defaultZoomDomain- Type
ChartXDomain- Default
null- Requirement
- optional
- Prop
onZoomDomainChange- Type
(domain: ChartXDomain) => void- Default
- —
- Requirement
- optional
- Prop
zoomOnBrush- Type
boolean- Default
false- Requirement
- optional
- Prop
xAxisLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
yAxisLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
ellipses- Type
ScatterChartOptions["ellipses"]- Default
- —
- Requirement
- optional
- Prop
layout- Type
ScatterChartOptions["layout"]- Default
- —
- Requirement
- optional
- Prop
referenceLine- Type
ScatterChartOptions["referenceLine"]- Default
- —
- Requirement
- optional
- Prop
referencePolygon- Type
ScatterChartOptions["referencePolygon"]- Default
- —
- Requirement
- optional
- Prop
renderer- Type
ChartRenderer- Default
- —
- Requirement
- optional
- Prop
ariaLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
title- Type
string- Default
- —
- Requirement
- optional
- Prop
description- Type
string- Default
- —
- Requirement
- optional
- Prop
keyboardNavigation- Type
boolean- Default
true- Requirement
- optional
- Prop
interactive- Type
boolean- Default
true- Requirement
- optional
- Prop
crosshair- Type
boolean | CrosshairBehaviorConfig- Default
true- Requirement
- optional
- Prop
tooltip- Type
boolean | TooltipBehaviorConfig- Default
true- Requirement
- optional
- Prop
legend- Type
boolean | LegendConfig- Default
false- Requirement
- optional
- Prop
activePoint- Type
ActivePoint<PointDatum> | null- Default
- —
- Requirement
- optional
- Prop
defaultActivePoint- Type
ActivePoint<PointDatum> | null- Default
null- Requirement
- optional
- Prop
onActivePointChange- Type
(point: ActivePoint<PointDatum> | null) => void- Default
- —
- Requirement
- optional
- Prop
hiddenSeries- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
defaultHiddenSeries- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
onHiddenSeriesChange- Type
(ids: readonly string[]) => void- Default
- —
- Requirement
- optional
- Prop
theme- Type
PartialChartTheme- Default
- —
- Requirement
- optional
- Prop
animation- Type
ChartAnimationInput- Default
- —
- Requirement
- optional
- Prop
class- Type
string- Default
- —
- Requirement
- optional
- Prop
style- Type
string- Default
- —
- Requirement
- optional
- Prop
speed- Type
number- Default
- —
- Requirement
- optional
- Prop
morphDurationMs- Type
number- Default
- —
- Requirement
- optional
- Prop
replayToken- Type
string | number- Default
- —
- Requirement
- optional
Events
| Event | Payload |
|---|---|
onSelectedIdsChange | (ids: SelectionValue) => void |
onBrushDomainChange | (domain: ChartXDomain) => void |
onZoomDomainChange | (domain: ChartXDomain) => void |
onActivePointChange | (point: ActivePoint<PointDatum> | null) => void |
onHiddenSeriesChange | (ids: readonly string[]) => void |
Content regions
childrendataSummary
Import
import { createSignal } from "solid-js";
import { ScatterChart } from "@grassroot/charts-solid";
import { VariantToggle } from "./VariantToggle";
Props
Prop
Type
Default
Requirement
pointsreadonly PointDatum[]—
required
xMaxnumber—
optional
yMaxnumber—
optional
xDomainChartNumericDomain—
optional
yDomainChartNumericDomain—
optional
xAxisChartAxisOptions<number>—
optional
yAxisChartAxisOptions<number>—
optional
ellipsesScatterChartOptions["ellipses"]—
optional
layoutScatterChartOptions["layout"]—
optional
referenceLineScatterChartOptions["referenceLine"]—
optional
referencePolygonScatterChartOptions["referencePolygon"]—
optional
showGridbooleanfalseoptional
formatXTick(value: number, index: number) => string—
optional
formatYTick(value: number, index: number) => string—
optional
- Prop
points- Type
readonly PointDatum[]- Default
- —
- Requirement
- required
- Prop
xMax- Type
number- Default
- —
- Requirement
- optional
- Prop
yMax- Type
number- Default
- —
- Requirement
- optional
- Prop
xDomain- Type
ChartNumericDomain- Default
- —
- Requirement
- optional
- Prop
yDomain- Type
ChartNumericDomain- Default
- —
- Requirement
- optional
- Prop
xAxis- Type
ChartAxisOptions<number>- Default
- —
- Requirement
- optional
- Prop
yAxis- Type
ChartAxisOptions<number>- Default
- —
- Requirement
- optional
- Prop
ellipses- Type
ScatterChartOptions["ellipses"]- Default
- —
- Requirement
- optional
- Prop
layout- Type
ScatterChartOptions["layout"]- Default
- —
- Requirement
- optional
- Prop
referenceLine- Type
ScatterChartOptions["referenceLine"]- Default
- —
- Requirement
- optional
- Prop
referencePolygon- Type
ScatterChartOptions["referencePolygon"]- Default
- —
- Requirement
- optional
- Prop
showGrid- Type
boolean- Default
false- Requirement
- optional
- Prop
formatXTick- Type
(value: number, index: number) => string- Default
- —
- Requirement
- optional
- Prop
formatYTick- Type
(value: number, index: number) => string- Default
- —
- Requirement
- optional
- Prop
formatXValue- Type
ScatterChartOptions["formatXValue"]- Default
- —
- Requirement
- optional
- Prop
formatYValue- Type
ScatterChartOptions["formatYValue"]- Default
- —
- Requirement
- optional
- Prop
locale- Type
ScatterChartOptions["locale"]- Default
- —
- Requirement
- optional
- Prop
referenceLines- Type
ScatterChartOptions["referenceLines"]- Default
- —
- Requirement
- optional
- Prop
referenceBands- Type
ScatterChartOptions["referenceBands"]- Default
- —
- Requirement
- optional
- Prop
xAxisLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
yAxisLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
renderer- Type
ChartRenderer- Default
- —
- Requirement
- optional
- Prop
ariaLabel- Type
string- Default
- —
- Requirement
- optional
- Prop
interactive- Type
boolean- Default
- —
- Requirement
- optional
- Prop
crosshair- Type
boolean | CrosshairBehaviorConfig- Default
true- Requirement
- optional
- Prop
tooltip- Type
boolean | TooltipBehaviorConfig- Default
- —
- Requirement
- optional
- Prop
legend- Type
boolean | LegendConfig- Default
- —
- Requirement
- optional
- Prop
activePoint- Type
ActivePoint<PointDatum> | null- Default
- —
- Requirement
- optional
- Prop
defaultActivePoint- Type
ActivePoint<PointDatum> | null- Default
null- Requirement
- optional
- Prop
onActivePointChange- Type
(point: ActivePoint<PointDatum> | null) => void- Default
- —
- Requirement
- optional
- Prop
hiddenSeries- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
defaultHiddenSeries- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
onHiddenSeriesChange- Type
(ids: readonly string[]) => void- Default
- —
- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode- Default
- —
- Requirement
- optional
- Prop
selectedIds- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
defaultSelectedIds- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
onSelectedIdsChange- Type
(ids: readonly string[]) => void- Default
- —
- Requirement
- optional
- Prop
brushDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
defaultBrushDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
onBrushDomainChange- Type
(domain: ChartXDomain) => void- Default
- —
- Requirement
- optional
- Prop
zoomDomain- Type
ChartXDomain- Default
- —
- Requirement
- optional
- Prop
defaultZoomDomain- Type
ChartXDomain- Default
null- Requirement
- optional
- Prop
onZoomDomainChange- Type
(domain: ChartXDomain) => void- Default
- —
- Requirement
- optional
- Prop
zoomOnBrush- Type
boolean- Default
- —
- Requirement
- optional
- Prop
title- Type
string- Default
- —
- Requirement
- optional
- Prop
description- Type
string- Default
- —
- Requirement
- optional
- Prop
keyboardNavigation- Type
boolean- Default
- —
- Requirement
- optional
- Prop
theme- Type
PartialChartTheme- Default
- —
- Requirement
- optional
- Prop
animation- Type
ChartAnimationInput- Default
- —
- Requirement
- optional
- Prop
speed- Type
number- Default
- —
- Requirement
- optional
- Prop
morphDurationMs- Type
number- Default
- —
- Requirement
- optional
- Prop
replayToken- Type
string | number- Default
- —
- Requirement
- optional
- Prop
class- Type
string- Default
- —
- Requirement
- optional
- Prop
style- Type
JSX.CSSProperties- Default
- —
- Requirement
- optional
Events
| Event | Payload |
|---|---|
onActivePointChange | (point: ActivePoint<PointDatum> | null) => void |
onHiddenSeriesChange | (ids: readonly string[]) => void |
onSelectedIdsChange | (ids: readonly string[]) => void |
onBrushDomainChange | (domain: ChartXDomain) => void |
onZoomDomainChange | (domain: ChartXDomain) => void |
Content regions
childrendataSummary