AreaChart montre l’évolution d’un total, ou sa décomposition en deux à six couches empilées, en SVG statique.
Quand l’utiliser
Montrer un volume qui évolue dans le temps : trafic, consommation, effectifs.
Décomposer un total en deux à quatre sources : l’empilement donne le total et la part de chaque couche.
Garder le zéro comme base : l’aire est proportionnelle à la valeur, ce que la courbe seule ne garantit pas.
Quand ne pas l’utiliser
Au-delà de trois ou quatre couches : l’empilement devient difficile à lire. À six couches de 500 points, mieux vaut des courbes séparées (LineChart) ou une petite série par graphique.
Pour comparer précisément des couches du milieu : seule la première repose sur la base zéro, les autres flottent. Utiliser BarChart ou LineChart.
Avec des valeurs négatives : l’empilement refuse le jeu et le build échoue avec le code stack.negative-value.
Pour une interaction (survol, infobulle) : le rendu est statique, sans JavaScript.
Exemples
Visites mensuelles en 2025Données du graphique
Visites mensuelles en 2025 : Données du graphique
Mois
Visites (visites)
1 janvier 2025
820
1 février 2025
790
1 mars 2025
880
1 avril 2025
940
1 mai 2025
1 010
1 juin 2025
980
1 juillet 2025
870
1 août 2025
810
1 septembre 2025
1 050
1 octobre 2025
1 180
1 novembre 2025
1 240
1 décembre 2025
1 190
Visites par source, deux couches
Recherche
Direct
Données du graphique
Visites par source, deux couches : Données du graphique
Mois
Recherche (visites)
Direct (visites)
1 janvier 2025
410
260
1 février 2025
400
250
1 mars 2025
450
270
1 avril 2025
480
290
1 mai 2025
520
310
1 juin 2025
500
300
1 juillet 2025
430
270
1 août 2025
400
250
1 septembre 2025
540
320
1 octobre 2025
600
350
1 novembre 2025
640
380
1 décembre 2025
610
360
Visites par source en 2025
Recherche
Direct
Référents
Données du graphique
Visites par source en 2025 : Données du graphique
Mois
Recherche (visites)
Direct (visites)
Référents (visites)
1 janvier 2025
410
260
150
1 février 2025
400
250
140
1 mars 2025
450
270
160
1 avril 2025
480
290
170
1 mai 2025
520
310
180
1 juin 2025
500
300
180
1 juillet 2025
430
270
170
1 août 2025
400
250
160
1 septembre 2025
540
320
190
1 octobre 2025
600
350
230
1 novembre 2025
640
380
220
1 décembre 2025
610
360
220
Visites par source, relevés manquants
Recherche
Direct
Référents
Données du graphique
Visites par source, relevés manquants : Données du graphique
Mois
Recherche (visites)
Direct (visites)
Référents (visites)
1 janvier 2025
410
260
150
1 février 2025
400
250
140
1 mars 2025
450
270
160
1 avril 2025
480
290
170
1 mai 2025
donnée manquante
310
180
1 juin 2025
donnée manquante
300
180
1 juillet 2025
430
270
170
1 août 2025
400
250
160
1 septembre 2025
540
320
donnée manquante
1 octobre 2025
600
350
230
1 novembre 2025
640
380
220
1 décembre 2025
610
360
220
Visites par source, six couches
Recherche
Direct
Référents
Réseaux sociaux
Infolettre
Annuaires
Données du graphique
Visites par source, six couches : Données du graphique
De une à six séries de 500 points : sous 10 ko et 400 nœuds, valeurs demandées comprises.
Au-delà de 250 points au total pour les couches, un échantillonnage LTTB réduit le tracé au build ; le tableau lié garde la donnée complète.
Chaque couche a deux tracés : le fond, fermé sur la base, et le contour de la seule courbe supérieure, en coordonnées relatives à une décimale.
Limites connues
Les couleurs --pp-chart-1..6 restent figées sur l’accent par défaut tant que l’issue #121 n’est pas faite.
Une valeur manquante compte pour zéro dans le cumul des couches au-dessus, mais la couche concernée est rompue.
Teinte d’accent
--pp-accent-hue règle la teinte OKLCH en degrés ; clarté et chroma restent ceux du système. Le branchement dans le build de tokens n’est pas fait (#121) : les graphiques ci-dessus utilisent les jetons figés sur la teinte 270.7. Le tableau montre ce que la dérivation donnerait pour la teinte 150, calculée à la construction de la page.
Jetons catégoriels figés et dérivation à une autre teinte
Rang
Figé, teinte 270.7, clair
Dérivé, teinte 150, clair
Dérivé, teinte 150, sombre
--pp-chart-1
oklch(47% 0.19 270.7)
oklch(47% 0.1294 150)
oklch(78% 0.1 150)
--pp-chart-2
oklch(64% 0.1491 60.7)
oklch(68% 0.31 330)
oklch(56% 0.24 315)
--pp-chart-3
oklch(20% 0.0787 30.7)
oklch(20% 0.0986 315)
oklch(88% 0.086 315)
--pp-chart-4
oklch(64% 0.1091 195.7)
oklch(48% 0.095 345)
oklch(52% 0.1235 120)
--pp-chart-5
oklch(44% 0.1781 0.7)
oklch(24% 0.0661 150)
oklch(56% 0.1 180)
--pp-chart-6
oklch(64% 0.2026 285.7)
oklch(64% 0.1346 165)
oklch(92% 0.2184 120)
Accessibilité
Clavier
Le SVG n’est pas interactif et ne reçoit pas le focus.
Le tableau lié se déplie au clavier (élément details natif) et défile au clavier.
Lecteur d’écran
Le SVG porte role="img", nommé par un title et décrit par un desc.
Le desc donne le total, les extrêmes et les données manquantes ; il dit si les couches sont empilées.
Le tableau de toutes les données est lié sous le graphique, dans un details fermé.
Garanti par le composant
Chaque couche a un contour de trait, un motif de remplissage et une légende, en plus de sa couleur (WCAG 1.4.1).
Jetons --pp-chart-1..6 en clair et en sombre ; aucun attribut style.
Une valeur manquante rompt la couche au lieu de la rabattre à zéro, et se dit dans le tableau lié.
Zéro JavaScript et aucune animation : rien à retirer sous prefers-reduced-motion: reduce.
Impression : motifs et tableau conservés, sans dépendre de la couleur.
À la charge de l’intégrateur
Donner un id unique par page (lettres, chiffres, tirets) : il relie titre, résumé et motifs.
Fournir un jeu de données valide, sans valeur négative : sinon le build échoue avec son code d’erreur.
Pour un empilement, ordonner les séries de la plus stable (en bas) à la plus variable (en haut).
Propriétés
Propriétés de AreaChart
Propriété
Type
Défaut
Description
id (obligatoire)
string
—
Préfixe unique des ids du titre et de la description : lettres, chiffres et tirets.
title (obligatoire)
string
—
Titre du graphique, premier élément de son nom accessible.
dataset (obligatoire)
Dataset
—
Jeu de données (`schema: 1`) : validé, sinon le build échoue avec le code d'erreur.
locale
string
'fr'
Locale des nombres et des dates. Défaut : `fr`.
tableLabel
string
—
Libellé du tableau de données lié.
emptyLabel
string
—
Message de l'état vide (aucune valeur présente).
errorLabel
string
—
Début du message d'erreur de rendu ; le code d'erreur le suit.
class
string
—
Réservé au placement du composant dans son parent.