Data✨ Premium

Live Sparkline

Mini-courbe SVG qui suit une série de valeurs : la dernière s'affiche en grand, la courbe se trace à l'apparition puis glisse à chaque nouvelle donnée.

SVGJSPath

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Data comprend 28 effets, dont 1 gratuits. Découvrir la catégorie →

3 exemples d'usage

Pouls en direct sur l'écran d'un vélo d'appartement — Live Sparkline exemple 1

① Pouls en direct sur l'écran d'un vélo d'appartement

QuandL'écran de séance d'un vélo connecté : le parcours à gauche, à droite le pouls en grand avec sa courbe, et la durée, la distance, la cadence en bas. Un battement arrive toutes les 0,7 s ; la scène l'ajoute à data-values.
PourquoiEn plein effort on ne lit pas un tableau : un gros chiffre et une ligne qui monte ou redescend disent tout de suite si l'on dérive vers la zone rouge.
Réglagesdata-unit="bpm", data-max-points="20", --lsp-height:86px, --lsp-max-width:none, ligne et aire #fb7185, valeur blanche en 34 px alignée à gauche, --lsp-speed:.45s.
Humidité du sol dans la tuile d'une plante — Live Sparkline exemple 2

② Humidité du sol dans la tuile d'une plante

QuandUne appli de plantes d'intérieur affiche ses plantes en tuiles ; celle du ficus, équipé d'une sonde, montre une courbe miniature de l'humidité du sol. Elle descend doucement puis remonte d'un coup à l'arrosage.
PourquoiDans une grille de six tuiles, la courbe tient dans 36 px de haut et dit à la fois le niveau actuel et la tendance, sans ouvrir la fiche de la plante.
Réglagesdata-unit="%", data-max-points="16", --lsp-height:36px, ligne #2f8f6b, valeur en 13 px à droite, fond transparent.
Votes du public qui s'accumulent sous l'affiche d'un film — Live Sparkline exemple 3

③ Votes du public qui s'accumulent sous l'affiche d'un film

QuandLa page « Prix du public » d'un festival de courts-métrages : sous le titre du film, le nombre de votes et sa courbe cumulée. Chaque clic sur la page de la scène (le bouton « Je vote pour ce film » compris) ajoute les voix arrivées depuis le dernier relevé.
PourquoiVoir la courbe grimper juste après son propre vote rend le geste tangible ; le visiteur comprend qu'il participe à un mouvement.
RéglagesValeur sans unité (le séparateur de milliers suit la langue de la page), --lsp-height:58px, ligne #d6a35c, point #f8e7c4, valeur en 22 px à gauche.

Comment ça marche

Les données vivent dans l'attribut data-values de la racine (nombres séparés par des virgules, point décimal). Le script garde les data-max-points dernières (20 par défaut) et dessine dans le <svg class="lsp-svg"> trois éléments : l'aire sous la courbe (dégradé vers le transparent), le tracé .lsp-line et un point .lsp-dot sur la dernière valeur. L'échelle verticale va du minimum au maximum de la série affichée.

Le dessin se fait en pixels réels : la largeur est lue sur le SVG et un ResizeObserver redessine quand le conteneur change de taille. La hauteur vient de --lsp-height (80 px). L'identifiant du dégradé est créé pour chaque instance, deux courbes ne se marchent donc pas dessus.

Pour ajouter un point, réécrivez data-values : un MutationObserver relance le dessin. Le tracé et l'aire passent à leur nouvelle forme par une transition CSS sur la propriété d (0,5 s), le point glisse avec cx / cy. À la première apparition à l'écran, la ligne se dessine de gauche à droite (stroke-dashoffset, 0,9 s), puis l'aire et le point apparaissent.

La valeur au-dessus de la courbe est mise en forme par Intl.NumberFormat dans la langue de la page, avec data-unit et data-decimals si besoin (« 132 bpm », « 42 % »).

Accessibilité

  • Une phrase plutôt qu'un dessin : le bloc .lsp-chart porte role="img" et un aria-label recalculé à chaque mise à jour : nom (data-label), dernière valeur, minimum, maximum et nombre de points. Le SVG et le grand chiffre sont aria-hidden pour ne pas être lus deux fois.
  • Pas d'annonce en continu : la courbe n'est pas une région aria-live, un flux d'un point par seconde serait lu sans arrêt. Si une valeur doit être annoncée (seuil franchi), faites-le dans un message à part.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, la courbe, l'aire et le point sont visibles tout de suite et changent de forme sans transition.
  • Aucune commande : le composant affiche, il n'a rien à atteindre au clavier ni à toucher. Les nouvelles valeurs viennent de votre code, par data-values.

Compatibilité navigateur

SVG, MutationObserver, ResizeObserver, IntersectionObserver et Intl.NumberFormat. Le glissement de la courbe repose sur la propriété CSS d, que Safari ne gère pas : la courbe y passe d'un coup à sa nouvelle forme (mesuré dans WebKit). Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : deux courbes indépendantes, mouvement réduit, 390 px, fond blanc, aucune erreur JS.

Chrome 64+✓ Complet (mesuré)
Firefox 97+✓ Complet (mesuré)
Safari 13.1+✓ Courbe et tracé d'apparition ; pas de glissement entre deux formes (WebKit mesuré)
Edge 79+✓ Complet (moteur Chromium)
Safari iOS 13.4+✓ Comme Safari, non vérifié sur appareil réel
Chrome Android 64+✓ Complet (moteur Chromium)

Sans JavaScript, seule la valeur écrite dans le HTML s'affiche, le SVG reste vide. Firefox avant la version 97 dessine la courbe mais la fait sauter au lieu de la faire glisser.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0243-root" data-values="48,52,50,57,55,61,58,64,60,67,63,70" data-max-points="20" data-label="Visiteurs en ligne">
  <div class="lsp-chart">
    <div class="lsp-value" aria-hidden="true">70</div>
    <svg class="lsp-svg" aria-hidden="true" focusable="false"></svg>
  </div>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
data-values (HTML, sur la racine) 12 valeurs de 48 à 70 La série, avec le point comme séparateur décimal. Réécrire l'attribut redessine la courbe avec un glissement.
data-max-points (HTML) 20 Nombre de valeurs gardées : les plus anciennes sortent par la gauche.
data-unit, data-decimals (HTML) aucune, 0 Unité ajoutée à la valeur affichée (% suit les règles de la langue) et nombre de décimales.
data-label (HTML) « Visiteurs en ligne » Début de la phrase lue par les lecteurs d'écran.
--lsp-line, --lsp-fill, --lsp-dot, --lsp-value (CSS) #6366f1, #6366f1, #a78bfa, #a78bfa Couleurs du tracé, de l'aire, du point et du chiffre.
--lsp-height et --lsp-max-width (CSS) 80px, 480px Hauteur du graphique et largeur maximale ; en dessous, il suit son conteneur.
--lsp-speed (CSS) .5s Durée du glissement entre deux formes de la courbe.
--lsp-bg et --lsp-min-height (CSS) #0a0a0f, 300px Fond et hauteur minimale de la racine ; transparent et 0 dans une carte.

FAQ

À chaque nouvelle mesure, ajoutez-la à la fin de l'attribut : racine.setAttribute('data-values', anciennes + ',' + mesure). Inutile de couper vous-même la liste, le script ne garde que les data-max-points dernières valeurs. Une mise à jour par seconde ou plus lente laisse le temps à la transition de 0,5 s de se jouer.
Le glissement est une transition CSS de la propriété d du tracé SVG. Chrome, Edge et Firefox (97+) la gèrent, Safari non : il dessine directement la nouvelle forme. Les données affichées restent justes, seul le mouvement manque.
Oui : la hauteur va du minimum au maximum des points affichés, comme la plupart des mini-courbes, pour montrer la tendance plutôt que les valeurs absolues. Ce composant n'a pas d'échelle fixe réglable : si vos lecteurs doivent comparer des niveaux précis, préférez un graphique avec axes et gardez la mini-courbe pour la tendance.