Spreidingsdiagram
Correlatie
Beweegt meer van X écht Y, of jaag je een toeval na? Plot je punten en de trend, de clusters en de uitschieters komen allemaal in één oogopslag naar boven, waarbij de bubbelgrootte er gratis een derde variabele bij geeft. De Pearson-correlatie komt terug in getContext(), zodat je het getal kunt citeren in plaats van naar de wolk te turen.
De grafiek hierboven is dezelfde engine in elk framework - alleen de integratiecode hieronder verschilt.
Wanneer kies je deze
- Een hypothese testen. Beweegt uitgavenbudget de conversie? Beweegt anciënniteit het verloop? De wolk, de trend en de uitschieters geven in één oogopslag antwoord, en
getContext()levert je de Pearson-r die je in het rapport kunt citeren. - Segmenten vinden voordat het gemiddelde ze verbergt. Clusters en uitschieters springen er in een spreidingsdiagram veel eerder uit dan in een samenvattende tabel - de eerste blik van elke analist op een nieuwe dataset.
- Is één as tijd, gebruik dan een lijndiagram - een spreidingsdiagram behandelt tijd als zomaar een getal en verliest de leesvolgorde die je publiek verwacht.
Veel data op WebGPU Experimenteel
ScatterChart heeft een optionele renderer="webgpu" die de puntenwolk tekent als GPU-instanced cirkels, terwijl assen, labels en tooltips op de SVG-laag blijven. Dit is capability-gated: in een browser zonder WebGPU wordt automatisch teruggevallen op canvas, en getContext().renderer rapporteert wat daadwerkelijk is getekend.
De demo hieronder is een knipoog naar de deeltjesfysica: 50.000 gesimuleerde dimuon-events boven een dalende continuümachtergrond. De scherpe verticale banden zijn de J/ψ-, ψ(2S)- en Υ(1S/2S/3S)-resonanties, dezelfde structuur die een LHC-dimuonspectrum laat zien, en precies het soort puntenwolk waarvoor een GPU-renderer bestaat.
Speel door de jaren heen
De Gapminder-truc: geef elk punt een date, zet timeline aan en zie de puntenwolk jaar na jaar verschuiven met de ingebouwde afspeelknop en scrubber. Standaard uit - zonder opt-in verandert er niets.
Druk op de afspeelknop onder de grafiek: de punten verschuiven jaar na jaar. Sleep de scrubber om naar een jaar te springen.
const ref = useRef<ScatterChartHandle>(null);
<ScatterChart ref={ref} {...props} timeline={{ speedMs: 1000, loop: true }} />;
// ref.current?.timeline() -> play() / pause() / seek(year) / stepForward()<ScatterChart :options="{ ...props, timeline: { speedMs: 1000, loop: true } }" /><div use:scatterChart={{ ...props, timeline: { speedMs: 1000, loop: true } }}></div>applyScatterChartProps(this.c.nativeElement, { ...props, timeline: { speedMs: 1000, loop: true } });<michi-vz-scatter-chart id="c"></michi-vz-scatter-chart>
<script>
const el = document.getElementById("c");
el.timeline = { speedMs: 1000, loop: true };
// el.getTimeline() -> play() / pause() / seek(year)
</script>speedMsbepaalt het tempo,loopbegint opnieuw,autoplay: truestart bij mounten,showControl: falseverbergt de ingebouwde balk.- Waarden glijden standaard tussen periodes (
interpolate); stem de beweging af mettweenMseneasing, of zetinterpolate: falsevoor harde overgangen. Met reduced motion is de overgang altijd hard. - De headless controller is altijd beschikbaar:
chart.timeline()biedtplay() / pause() / toggle() / seek(period) / stepForward() / stepBack(), plusonStepenformatPeriodin de config voor eigen UI. - Combineer met
pointLabelszodat elke bubbel een naam houdt terwijl hij beweegt; eenfilterblijft binnen elke periode gelden. - Punten zonder
dateblijven in elke periode zichtbaar.
Gebruik
import { ScatterChart } from "@michi-vz/react";
export default () => <ScatterChart {...props} />; // props = the chart options<script setup>
import { ScatterChart } from "@michi-vz/vue";
</script>
<template>
<ScatterChart :options="props" />
</template><script>
import { scatterChart } from "@michi-vz/svelte";
</script>
<div use:scatterChart={props}></div>// main.ts - register the elements once
import "@michi-vz/angular";
import { applyScatterChartProps } from "@michi-vz/angular";
// component (uses CUSTOM_ELEMENTS_SCHEMA)
// template: <michi-vz-scatter-chart #c></michi-vz-scatter-chart>
applyScatterChartProps(this.c.nativeElement, props);<script type="module" src="https://cdn.jsdelivr.net/npm/@michi-vz/wc/dist/michi-vz-wc.bundle.js"></script>
<michi-vz-scatter-chart id="c"></michi-vz-scatter-chart>
<script>
Object.assign(document.getElementById("c"), props); // dataSet/series, title, …
</script>import { mountScatterChart } from "@michi-vz/core";
const chart = mountScatterChart(el, props);
chart.update(next);
chart.getContext(); // renderer-agnostic, LLM-ready
chart.destroy();API
Props zijn getypeerd als ScatterChartProps in @michi-vz/core. Gedeeld door alle grafieken: width, height, margin, colors / colorsMapping, renderer ("svg", "canvas", of experimenteel "webgpu"), highlightItems, disabledItems, en de on*-callbacks. onChartDataProcessed / getContext() retourneren de renderer-agnostische ChartContext.
