Hopp til hovedinnhold
Meny

lmfaole.party / designsystem / komponenter / Punktdiagram

  • Forside
  • Turer
  • Økonomi
  • Slides
  • <lm-chart-scatter> – Punktdiagram / Scatter chart

    Om komponenten

    Formål

    Punktdiagram for å utforske sammenhengen (korrelasjon/spredning) mellom to numeriske variabler i et datasett. I motsetning til chart-line/chart-area/chart-bar, som alle forutsetter én ordnet kategoriakse, er x her en fri numerisk verdi - punktene plasseres etter faktisk x/y-verdi, ikke etter indeks.

    Egner seg for

    • Utforske om to numeriske variabler henger sammen, f.eks. reiselengde mot kostnad, eller alder mot inntekt i et større datasett.
    • Datasett med mange enkeltobservasjoner der fordeling/spredning er mer interessant enn en sum eller trend.

    Egner seg ikke for

    • Data ordnet langs én kategoriakse (tid, navngitte grupper) - bruk chart-line/chart-area/chart-bar da, som viser rekkefølge tydeligere.
    • Svært store datasett (mange tusen punkter) i uforandret form - SVG-en tegner ett DOM-element per punkt; aggreger/sample dataene først (se guiden om store datasett).

    Bruk

    <script type="module" src="/designsystem/komponenter/data-visualisering/chart-scatter/chart-scatter.js"></script>
    
    <lm-chart-scatter tittel="Reiselengde mot kostnad" x-etikett="Kilometer" y-etikett="Kostnad"></lm-chart-scatter>
    const diagram = document.querySelector("lm-chart-scatter");
    diagram.data = [
        {x: 120, y: 450, label: "Tur til Bergen"},
        {x: 30, y: 90, label: "Dagstur"},
        {x: 800, y: 2100, label: "Interrail"},
    ];
    diagram.formatVerdi = (value) => `${value} kr`;

    Prøv selv

    Rediger koden under - resultatet oppdateres live.

    Attributter

    Attributt Type Standard Beskrivelse
    dataArray<{x: number, y: number, label?: string, color?: string}>[]Property. Ett punkt per datarad. x/y er frie numeriske verdier (ikke etiketter/indekser).
    tittelstring""Attributt/property. Tekst brukt som <caption> i den skjulte datatabellen.
    x-etikettstring"X"Attributt/property (xEtikett). Kolonneoverskrift/tooltip-navn for x-verdien.
    y-etikettstring"Y"Attributt/property (yEtikett). Kolonneoverskrift/tooltip-navn for y-verdien.
    formatVerdi(value: number) => stringString(value)Property. Formatterer x-/y-verdiene i akse-etikettene, punktenes native <title>-tooltip og i datatabellen.

    Parts

    Part Beskrivelse
    diagramYtterrammen rundt diagram og tabell.
    diagram-visualSVG-flaten.
    data-tabellSkjult datatabell for tilgjengelighet.
    akseHver av de to aksene (x og y).
    etikettMin-/maks-tallene langs hver akse.
    punktHver datapunktmarkør.

    Styling med ::part()

    Hver part over kan restyles direkte fra et vanlig, ytre stilark - uten å måtte endre selve komponenten eller duplisere den:

    lm-chart-scatter::part(diagram) {
        /* egne stiler for "Ytterrammen rundt diagram og tabell." */
    }
    
    lm-chart-scatter::part(diagram-visual) {
        /* egne stiler for "SVG-flaten." */
    }
    
    lm-chart-scatter::part(data-tabell) {
        /* egne stiler for "Skjult datatabell for tilgjengelighet." */
    }
    
    lm-chart-scatter::part(akse) {
        /* egne stiler for "Hver av de to aksene (x og y)." */
    }
    
    lm-chart-scatter::part(etikett) {
        /* egne stiler for "Min-/maks-tallene langs hver akse." */
    }
    
    lm-chart-scatter::part(punkt) {
        /* egne stiler for "Hver datapunktmarkør." */
    }

    Tilgjengelighet

    SVG-en skjules med aria-hidden="true" og role="presentation"; skjermlesere får den skjulte <table>-en med kolonner for etikett, X og Y. Akse-etikettene (min/maks) er vanlig, synlig SVG-tekst med dempet opasitet via --opacity-muted. Komponenten er ren presentasjon uten tastaturstøtte. prefers-reduced-motion: reduce slår av punkt-animasjonen, og forced-colors: active bruker systemfarger.

    • SVG-en skjules med aria-hidden="true" og role="presentation"; skjermlesere får den skjulte <table>-en.
    • Tabellen har kolonner for etikett, X og Y, samt <caption> fra tittel.
    • Komponenten er ren presentasjon uten tastaturstøtte.
    • prefers-reduced-motion: reduce slår av animasjoner, og forced-colors: active bruker systemfarger.

    Referanser

    Se også:

    • ../chart-line/index.html - viser én ordnet serie i stedet for frie x/y-punkter - bruk den når x representerer en kategori/rekkefølge.
    • ../chart-area/index.html - viser flere ordnede serier samtidig i stedet for spredningen mellom to variabler.

    Avhengigheter: designsystem/funksjoner/sikkerhet/escape-html/