Graphiques en lignes

Rendu de lignes, marches, plages, points, barres et aires empilées à grande échelle.

Démarrage par framework

Affichez le même graphique linéaire de six façons

Choisissez l’API TypeScript impérative ou un adaptateur léger. Chaque onglet utilise les mêmes données typées et options.
chart.ts@sixtyfold/line
import { LineChart } from "@sixtyfold/line";

const data = {
  x: new Float64Array([0, 1, 2, 3]),
  y: new Float64Array([3, 7, 4, 9]),
  length: 4,
};

const canvas = document.querySelector<HTMLCanvasElement>("#chart")!;
const chart = new LineChart(canvas, {
  renderMode: "auto",
  axis: { bottom: { format: "time" } },
  series: [{ name: "Signal", color: "#4ecca3" }],
});

await chart.initialize();
chart.setData(data);


window.addEventListener("pagehide", () => chart.destroy(), { once: true });

@sixtyfold/line affiche plusieurs séries par rapport à une colonne X ordonnée. Les séries peuvent utiliser indépendamment la géométrie ligne, marche, plage, nuage de points, barre ou aire empilée tout en partageant les axes, l'interaction et les info-bulles.

La configuration exacte et les signatures de méthode se trouvent dans la référence générée Options Line, LineChart méthodes, et types de données line.

Géométrie des séries

TypeEntréeUsage prévu
lineFloat64ArrayObservations continues avec interpolation linéaire ou configurée.
step-before, step-after, step-midFloat64ArrayValeurs qui s'appliquent sur un intervalle. step alias step-after.
range{ low, high, y? }Incertitude, min/max, percentiles ou autre enveloppe. band est un alias.
scatterFloat64ArrayPoints indépendants. points est un alias.
barFloat64ArrayValeurs rendues à partir d'une ligne de base configurable. column est un alias.
stacked-areaFloat64ArrayContributions ordonnées sommées en une géométrie cumulative.

SeriesOptions contient les champs nom commun, couleur, largeur, unité, remplissage et repère. Les options spécifiques à la géométrie vivent sous band, point, bar et stack afin que des réglages non liés ne deviennent pas ambigus.

Données de plage

chart.setMultiSeriesData({
  x,
  series: [
    { low: temperatureMin, high: temperatureMax },
    temperatureMean,
  ],
  length: x.length,
  seriesCount: 2,
});

Utilisez une série moyenne explicite lorsque l'agrégat réel n'est pas (low + high) / 2. Supprimez le trait central de la plage avec une largeur de série nulle et désactivez les frontières avec band.borderWidth: 0 lorsque l'enveloppe seule transmet l'information voulue.

Niveau de détail (LOD)

LOD signifie niveau de détail. Il permet au graphique de dessiner une représentation de la taille de l'écran d'un jeu de données beaucoup plus grand, puis de révéler des détails plus fins lors du zoom. La politique adaptive par défaut préserve les points d'extrémité ordonnés, les extrema et les vraies lacunes NaN. La plupart des applications devraient conserver les valeurs par défaut.

La grille adaptive reste stable pendant l'animation et les redessins non liés. Elle ne change que si un zoom continu dépasse suffisamment le niveau de détail actuel.

const chart = new LineChart(canvas, {
  lod: {
    mode: "adaptive",
    density: 0.75,
    rebaseRatio: 1.25,
    quantizationStep: 0.25,
  },
});
OptionPar défautPlage acceptéeSignification
density0.750.25–2Colonnes de présentation cibles par pixel CSS. Plus de colonnes conservent le détail local et coûtent plus de travail.
rebaseRatio1.251.05–2Dérive maximale de la largeur projetée avant que la grille adhésive ne change.
quantizationStep0.250.05–1Intervalle disponible à l'intérieur de chaque octave binaire. Des pas plus petits rendent les changements de représentation plus fins.

Ajustez rebaseRatio et quantizationStep ensemble. Pour des changements plus douces, commencez près de 1 + quantizationStep, par exemple 1.10–1.12 avec 0.10. Une bande multi-passe sensible visuellement peut bénéficier de 0.05 et 1.06–1.08 ; mesurez le coût sur les navigateurs cibles et les rapports de pixels de l'appareil.

Patchez la politique sans reconstruire le graphique ni reconstruire sa hiérarchie :

chart.setLODOptions({ density: 0.75, rebaseRatio: 1.12, quantizationStep: 0.1 });

mode: "pyramid" sélectionne parmi des niveaux globaux min/max préconstruits. Les aires empilées utilisent toujours cette voie car réduire indépendamment chaque entrée modifierait la géométrie cumulative.

Visibilité et apparence

chart.setSeriesVisible(2, false);
chart.setVisibleSeries([0, 1]);
chart.updateSeriesAppearance(0, { color: "#ffe47a", width: 2 });

chart.setSeriesVisibilityCallback((event) => {
  console.log(event.source, event.visibility);
});

Les callbacks de visibilité identifient les changements provenant de l'initialisation, de l'API ou d'une légende interactive. legend.allowHideAll contrôle si la légende intégrée peut masquer la série visible finale.

Streaming

chart.initStreaming(2, 1_000_000);
chart.addVector(timestamp, [phaseL1, phaseL2]);

Utilisez addVectors pour les colonnes typées existantes. Le tampon circulaire maintient l'affichage chronologique après son retour à zéro.

Remplacement animé

setData et setMultiSeriesData dévoilent les nouvelles séries de gauche à droite lorsque l'animation est activée. preservePreviousFrame: true maintient le tracé précédent en avance sur la nouvelle frontière de révélation. Ne l'utilisez qu'après la fin de la révélation précédente, et restaurez immédiatement la fenêtre d'affichage lors du remplacement d'un aperçu par son jeu de données complet.