A monitor showing an accessible data visualisation with a focused bar and a screen-reader announcement of its values — the visual marker for accessible data-viz tooling.
Image description: A monitor showing an accessible data visualisation with a focused bar and a screen-reader announcement of its values — the visual marker for accessible data-viz tooling.

Engineering primer · A11y data-viz stack

Saavutettava datavisualisointi vuonna 2026: toimiva teknologiapino

Tekninen katsaus: Vega-Lite, Plotly, Observable Plot, Apache ECharts ja D3 arvioidaan saavutettavuuden oletusasetusten mukaan — SVG/ARIA, värisokkoystävälliset väripaletit, näppäimistönavigaatio, ruudunlukuohjelmarakenne ja vaihtoehtoinen taulukkonäkymä.

Saavutettava datavisualisointi vuonna 2026:
toimiva teknologiapino

Viisi kirjastoa hallitsee nykyistä datavisualisointikeskustelua, mutta vain osa niistä kohtelee ruudunlukuohjelmaa ensisijaisena käyttäjänä. Tämä on käytännön insinöörille laadittu arviointilomake, kirjoitettu tiimeille, jotka toimittavat kaavioita tuotantoon vuonna 2026.

5
arvioitua kirjastoa
5
arvioitua saavutettavuusakselia
noin 8 %
väestöstä on värinäköhäiriö
10 min lukuaika
Päivitetty toukokuu 2026

1. Viisi akselia, jotka ratkaisevat kaavion saavutettavuuden

Ilmaisu “saavutettava kaavio” kätkee sisälleen joukon hiljaisesti erilaisia vaatimuksia. Pylväskaavio voidaan renderöidä SVG:nä täydellisellä värikontrastilla ja silti olla tavoittamattomissa näppäimistön käyttäjälle. Se voi olla näppäimistönavigoitava ja silti ilmoittaa ruudunlukuohjelmalle mitään hyödyllistä. Se voi ilmoittaa arvot selkeästi ja silti jättää näkevän heikkonäköisen käyttäjän pulaan ensimmäisen työkaluvihjeen kohdalla. Kirjastojen oikeudenmukaista vertailua varten arvioidaan jokainen viittä itsenäistä akselia vastaan, jotka vastaavat suoraan sitä, miten avustavan teknologian todellinen käyttäjä kokee visualisoinnin.

Nämä viisi akselia eivät ole henkilökohtainen mieltymyslista. Ne ovat käytännön käännös WCAG 2.2 -onnistumiskirteereistä (1.4.11 ei-tekstuaalinen kontrasti, 2.1.1 näppäimistö, 4.1.2 nimi rooli arvo), ARIA-tekijäkäytäntöohjeista kaavioita ja kuvaajia varten sekä W3C:n tutkimuskysymysten työryhmän luonnoksesta “Data Visualization Accessibility”, joka on ollut kierrossa vuodesta 2023. Jokainen kaaviokirjasto tuottaa SVG:tä; jokaisella kirjastolla on jonkinlainen selite; jokaisella kirjastolla on jokin mielipide väreistä. Niitä erottavat oletusasetukset — kaavio, jonka saat, kun kirjoitat pienimmän järkevän määrän koodia.

noin 8 %
miehistä on jonkinlainen puna-viher-värinäköhäiriö — siksi kategoristen palettien on oltava värisokkoystävällisiä oletuksena (NIH).
2.1.1
WCAG-onnistumiskriteeri: kaiken toiminnallisuuden, myös kaavioiden tutkimisen, on oltava käytettävissä pelkällä näppäimistöllä.
4.1.2
WCAG: jokaisen interaktiivisen elementin — myös jokaisen kohdistettavan datapisteeristeen — on tarjottava avustavalle teknologialle nimi, rooli ja arvo.
Viisi akselia

1. SVG semanttisella ARIAlla. Tuottaako kirjasto SVG:tä (ei canvasta), ja sisältääkö SVG merkityksellisiä rooleja, tunnisteita ja ryhmärakennetta nimettömien <g>-pesien sijaan?

2. Värisokkoystävälliset paletit oletuksena. Ovatko kategoriset ja sekventiaaliset paletit värinäköhäiriötestattuina valmiiksi, vai täytyykö tietää korvata ne?

3. Näppäimistöllä navigoitavat datapisteet. Voiko näkevä pelkän näppäimistön käyttäjä siirtyä kaavion sisään, liikkua merkkien välillä ja lukea kunkin merkin arvon?

4. Ruudunlukuohjelman kuvaukshierarkia. Onko otsikko, yhden lauseen yhteenveto ja sarjakohtaiset / pistekohtaiset ilmoitukset — eikä vain yksittäinen alt-tekstitiedote?

5. Vaihtoehtoinen taulukkonäkymä. Onko pohjana oleva data saatavilla HTML-taulukkona, joka on linkitetty kaavion viereen tai renderöity sen rinnalle käyttäjille, jotka suosivat taulukkomuotoa?

”Kaavio, joka toimitetaan täydellisellä kontrastilla ja värisokkoystävällisellä paletilla mutta ilman näppäimistömallia, on kaavio, jonka olet renderöinyt puolelle yleisöstäsi.”

— Disability World -toimituksen tekninen tiimi

2. Viisi tarkasteltavaa kirjastoa

Viisi kirjastoa kattaa ylivoimaisen enemmistön uudesta kaaviotyöstä vuonna 2026: Vega-Lite, Plotly, Observable Plot, Apache ECharts ja D3 mukautetulla koodilla. Ne sijoittuvat eri kohtiin abstraktioakselilla — Vega-Lite on deklaratiivisin, D3 imperatiivisin — ja jokaisella on erilainen asenne saavutettavuuteen. D3:a käsitellään erikseen, koska “D3 + mukautettu” on pohjimmiltaan erilainen tekninen lähtökohta: saavutettavuus, jonka saat, on saavutettavuus, jonka kirjoitat.

Mikään näistä kirjastoista ei ole vihamielinen saavutettavuudelle. Kaikki tuottavat SVG:tä (Plotly ja ECharts voivat myös tuottaa canvasta; arvioidaan SVG-tila). Kaikki hyväksyvät mielivaltaiset väripaletit. Kysymys on, mitä saat, kun kirjoitat pienimmän järkevän määrän koodia, ja kuinka paljon uudelleenkytkentää tarvitaan päästäksesi siitä oletuksesta kaaviolle, joka todella läpäisee WCAG 2.2 AA:n.

Vega-Lite
Interaktiivisten grafiikkojen deklaratiivinen kielioppi (UW)
Sopii hyvin kojelautiin ja analyytikkolähtöisiin kaavioihin
TulosteSVG (canvas valinnainen)
Saavutettavuusoletukset
Plotly.js
Avoimen lähdekoodin kaaviotyökalupakki (Plotly Inc.)
Sopii hyvin tieteellisiin ja BI-tyylisiin kojelautiin
TulosteSVG (canvas WebGL-jäljille)
Saavutettavuusoletukset
Observable Plot
Tiivis merkkipohjainen API (Observable / Mike Bostock)
Sopii hyvin toimituksellisiin ja tutkiviin kaavioihin
TulosteSVG
Saavutettavuusoletukset
Apache ECharts
Yritystasoinen kaaviointi (Apache Software Foundation)
Sopii hyvin tiheisiin operatiivisiin kojelautiin
TulosteCanvas (SVG-renderöijä saatavilla)
Saavutettavuusoletukset
D3 + mukautettu
Matalan tason datan sidontaprimitiivit (Mike Bostock)
Sopii hyvin räätälöityihin toimituksellisiin ja tuotekaavioihin
TulosteSVG (mitä tahansa kirjoitat)
Saavutettavuusoletukset
D3-huomio

D3:n “nolla pistettä” -arvio ei ole arvostelu kirjastosta — se on rehellinen kuvaus siitä, mitä saat tavallisesta D3-buildista. D3 on primitiivejä. Saavutettavuus D3-kaaviossa on sitä, mitä tekijä kirjoittaa. D3-kaavio, jonka on kirjoittanut ARIAn tunteva insinööri, voi olla sivun saavutettavin kaavio; D3-kaavio, joka on kirjoitettu ilman tätä tietämystä, on lähes aina sivun vähiten saavutettava kaavio.


3. Arviointimatriisi: kirjasto saavutettavuusominaisuuden mukaan

Ensimmäisen osion viisi akselia arvioituna toisen osion viittä kirjastoa vastaan. “Kyllä” tarkoittaa, että oletuskäyttäytyminen läpäisee akselin; “Osittain” tarkoittaa, että kirjasto tarjoaa oikeat koukut mutta ei ota niitä käyttöön oletuksena; “Manuaalisesti” tarkoittaa, että insinöörin on kirjoitettava asiaa koskeva koodi tyhjästä.

Vega-LitePlotly.jsObservable PlotApache EChartsD3 + mukautettu
SVG-tuloste semanttisella ARIAllaKyllä (SVG, otsikoidut ryhmät)Kyllä (SVG, ARIA-tunnisteet)Kyllä (SVG, merkkíroolit)Osittain (canvas oletuksena; SVG-renderöijä opt-in)Manuaalisesti
Värisokkoystävälliset paletit oletuksenaKyllä (Tableau 10 + viridis)Osittain (Plotly-oletus; värisokkopaletti opt-in)Kyllä (Observable categorical10)Osittain (oletuskaavaa ei testattu värisokkojen kannalta)Manuaalisesti
Näppäimistöllä navigoitavat datapisteetOsittain (kohdistus selitteeseen; merkit vaativat konfiguroinnin)Kyllä (nuolinäppäimistönavigaatio 2.x:ssä)Osittain (tip-liitännäinen antaa kohdistuksen; merkit manuaalisesti)Osittain (a11y-moduuli opt-in)Manuaalisesti
Ruudunlukuohjelman kuvaukshierarkiaKyllä (description-ominaisuus)Osittain (yksi otsikko; pistekohtainen opt-in)Kyllä (ariaLabel + ariaDescription -merkit)Osittain (a11y-moduuli tuottaa sarjakohtaisen alt-tekstin)Manuaalisesti
Vaihtoehtoinen taulukkonäkymäOsittain (datataulu helppo renderöidä)Osittain (vienti CSV:nä; ei DOM-taulukkoa)Osittain (data()-apuri, ei automaattista taulukkoa)Osittain (työkalupalkki tukee datanäkymää)Manuaalisesti
Matriisin lukuohje

Vega-Lite ja Observable Plot johtavat deklaratiivisissa oletuksissa. Plotly johtaa sisäänrakennetussa näppäimistönavigaatiossa. ECharts:lla on luettelon kattavin opt-in-saavutettavuusmoduuli — mutta vain jos otat sen käyttöön. D3 ei anna mitään eikä kaikkea: jokainen solu on “manuaalisesti”, koska kirjastolla ei ole mielipidettä. Mikään näistä kirjastoista ei ole yhden rivin ratkaisu; kaikki ovat toteutettavissa tahdottaessa.


4. Hyvä kaavio, huono kaavio: sama data kahdella tavalla

Matriisi näyttää, mitä kukin kirjasto tarjoaa; tässä osiossa näytetään, mitä käytännön insinööri tosiasiassa kirjoittaa. Sama data, kaksi toteutusta. “Huono” versio toimitetaan nopeasti ja näyttää hyvältä 27 tuuman näytöllä. “Hyvä” versio vaatii 12 koodiriviä lisää ja läpäisee jokaisen akselin matriisissa.

Huono kaavio — nopea mutta tavoittamaton
// Vega-Lite — pelkät oletukset
{
"data": { "url": "complaints.csv" },
"mark": "bar",
"encoding": {
  "x": { "field": "category", "type": "nominal" },
  "y": { "field": "count", "type": "quantitative" },
  "color": { "field": "category" }
}
}

Renderöityy. Näyttää hyvältä. Ei kaavion otsikkoa ruudunlukuohjelmalle. Ei kuvausta. Ei näppäimistömallia merkeille. Oletusvärikaava ei ole värisokkoystävällinen käytettävien kategorioiden lukumäärällä. Ei varakauluustaulukkoa.

Hyvä kaavio — 12 tärkeää riviä
// Vega-Lite — saavutettavat oletukset
{
"title": "Valitukset pinnan mukaan, 2024",
"description":
  "Pylväskaavio 4 605 verkkosaavutettavuusvalituksesta, järjestettynä pinnan mukaan. Korkein: lomakkeet (1 940).",
"data": { "url": "complaints.csv" },
"mark": { "type": "bar", "ariaRoleDescription": "bar" },
"encoding": {
  "x": { "field": "category", "type": "nominal",
         "axis": { "labelAngle": -30 } },
  "y": { "field": "count", "type": "quantitative",
         "title": "Valitukset" },
  "color": {
    "field": "category",
    "scale": { "scheme": "tableau10" },
    "legend": { "title": "Pinta" }
  },
  "tooltip": [
    { "field": "category", "title": "Pinta" },
    { "field": "count", "title": "Valitukset" }
  ]
},
"usermeta": { "embedOptions": { "ariaLabel": "Valituskaavio" } }
}

Otsikko, kuvaus, värisokkoystävällinen paletti, nimetty akseli, nimetyt työkaluvihjekentät, ARIA-roolin kuvaus merkissä. Yhdistettynä samasta datajoukosta renderöityyn <table>-elementtiin tämä läpäisee jokaisen akselin matriisissa poistumatta deklaratiivisesta kieliopista.

Hyvä kaavio ei ole erilainen kaavio. Se on sama kaavio, jossa implisiittiset oletukset on tehty eksplisiittisiksi, otsikko kirjoitettu, paletti nimetty, merkkikohtainen rooli selvitetty ja data tarjottu myös taulukkona. Siinä on koko taito.

Vaihtoehtoisen taulukkonäkymän malli

Mikään viidestä kirjastosta ei toimita oletusarvoista “renderöi tämä kaavio taulukkona” -tilaa itsestään. Käytännön malli on: sido sama data kahteen komponenttiin — kaaviolle ja sen alla olevaan HTML-<table>-elementtiin, joka on usein visuaalisesti piilotettu mutta avustavan teknologian saatavissa “Näytä datataulu” -vaihtokytkimellä, joka kääntää hidden-attribuuttia. Tämä malli maksaa noin 20 riviä kehyskoodia kaaviokohtaisesti ja maksaa itsensä takaisin ensimmäisessä käyttäjätutkimussessiossa.


5. Konkreettiset suositukset käyttötapauksen mukaan

Kirjastovalinta vuonna 2026 liittyy enimmäkseen työnkulun soveltuvuuteen. Kaikki viisi kirjastoa ovat toimivia. Kysymys on, mikä niistä vastaa tosiasiassa toimittamiasi kaaviotyyppejä. Viisi yleistä käyttötapausta, viisi suositusta ja nimetty paras vaihtoehto.

1

Toimitukselliset / datajournalistiset kaaviot (yksi kaavio, viimeistelty)

Valinta: Observable Plot, Vega-Lite läheisenä kakkosena. Plot:n merkkipohjainen API antaa merkkikohtaiset ARIA-tunnisteet ilmaiseksi, kategorinen paletti on värisokkoystävällinen ja SVG-tuloste luetaan selkeästi. Vega-Lite on toiseksi paras, koska description-ominaisuus on siistein yhden attribuutin ruudunlukuohjelmayhteenveto missään kirjastossa — mutta Plot voittaa oletusergonomiassa kertaluonteisille toimituksellisille paloille.

2

Analyytikkolähtöiset kojelaudat (monta kaaviota, deklaratiivinen)

Valinta: Vega-Lite, Observable Plot läheisenä kakkosena. Vega-Liten spesifikaatiokielioppi antaa analyytikoille mahdollisuuden koostaa 30 kaaviota yhdessä muistikirjassa ilman JavaScriptin kirjoittamista, ja skeeman title- + description-ominaisuudet antavat ruudunlukuohjelmahierarkian ilman ylimääräistä putkistoa. Yhdistä jokainen kaavio Vega-renderöityyn datatauluun, jotta vaihtoehtoinen taulukkoakseli läpäistyy.

3

Tieteelliset / BI-kojelaudat (interaktiivinen tutkiminen)

Valinta: Plotly.js, ECharts läheisenä kakkosena. Plotly on ainoa kirjasto listalla, joka toimittaa näppäimistön nuolinäppäinnavigaation merkkien välillä oletuksena 2.x-linjassa. Jos yleisösi odottaa voivansa viedä hiiren päälle, zoomata ja porautua, Plotlyn sisäänrakennettu näppäimistömalli on ratkaiseva tekijä. ECharts ottaa kiinni, jos otat aria-moduulin käyttöön — mutta sinun täytyy ottaa se käyttöön.

4

Tiheät operatiiviset kojelaudat (satoja pisteitä, suorituskyky kriittinen)

Valinta: Apache ECharts SVG-renderöijällä + aria-moduuli päällä, Plotly läheisenä kakkosena. ECharts on vahvin suorituskykyratkaisu tässä ryhmässä erittäin tiheille kaavioille, ja aria-moduuli tuottaa sarjakohtaisen alt-tekstin, jonka ruudunlukuohjelmat käsittelevät toimivasti. Kytke canvas-renderöijä pois; canvas on nopeampi, mutta saavutettavuuspuu häviää.

5

Räätälöidyt toimitukselliset kaaviot, joita mikään kirjasto ei renderöi (mukautettu, ainutlaatuinen)

Valinta: D3 käsinkirjoitetulla saavutettavuuskerroksella. Käsinkirjoitettu kerros on välttämätön: <title> + <desc> SVG-juuressa, merkkikohtainen role=“img” aria-labelin kanssa, kohdistusmalli jokaisessa kohdistettavassa merkissä ja sisar-<table> renderöitynä samasta datajoukosta. D3 on oikea työkalu, kun kaavio ei todella ole olemassa missään muualla; se on väärä työkalu, kun kaavio on pylväskaavio ja joku kurottautui D3:een tavasta.

Mitä mikään näistä kirjastoista ei korjaa

Kaaviokirjaston sisällä oleva kaavio on harvoin sivun ainoa asia. Työkaluvihjeet, jotka näkyvät vain hover-tilassa eivätkä koskaan kohdistuksen yhteydessä, selitteet, jotka ovat <div>-elementtejä eivätkä <ul>-listoja, sivun nollaustyylitaulussa ohitetut kohdistusrenkaat, väripisteet, joilla on riittämätön ei-tekstuaalinen kontrasti sivun taustaa vasten — nämä ovat sivutason virheitä, joita mikään kaaviokirjasto ei korjaa puolestasi. Kirjasto antaa merkit; sivu antaa loput.


Yhteenveto: toimiva pino on se, jonka kirjoitat ylös

Mikään viidestä kirjastosta ei ole väärä vastaus. Kaikki läpäisevät useimmat akselit pienellä tahdolla. Luotettavin ennustaja saavutettavalle kaaviolle vuonna 2026 ei ole kirjasto tuontirivillä — se on se, onko tiimi kirjannut ylös, samaan paikkaan kuin suunnittelujärjestelmä, mitä “saavutettava kaavio” tarkoittaa tässä organisaatiossa. Otsikko. Kuvaus. Paletti. Näppäimistömalli. Vaihtoehtoinen taulukko. Viisi riviä CONTRIBUTING.md-tiedostossa; ero kaavion välillä, joka toimitetaan, ja kaavion välillä, joka päätyy perille.

Valitse kirjasto, joka sopii työnkulkuun, ota sen saavutettavuusoletukset käyttöön, yhdistä jokainen kaavio datatauluun ja auditoi kaavion ympärillä oleva sivutason kehys yhtä huolellisesti kuin kaavio itsessään. Oletuskaavio missä tahansa näistä kirjastoista voidaan tehdä saavutettavaksi. Oletuskaavio missään näistä kirjastoista ei ole saavutettava ilman tahtoa.

”Kirjasto antaa merkit; sivu antaa loput.”

— Disability World -toimituksen tekninen tiimi