Nouveautés
Les dernières versions de @michi-vz, de la plus récente à la plus ancienne. Les six packages - core, wc, react, vue, svelte, angular - sont versionnés ensemble (chaque version liste les éventuels packages ayant avancé plus vite). Le détail complet par commit se trouve dans les releases GitHub.
v1.13.5
Package versions: core 1.34.0 · wc 1.23.0 · angular 1.20.0 · react 1.13.5 · vue, svelte 1.9.5 · examples 1.6.1 · devtools 0.3.7 · insights 0.2.42.
- Cliquer sur la marque, pas sur un lien dans son infobulle. Les nœuds et flux d'un Sankey signalent
onNodeClick/onLinkClick, une bulle d'un Graphique à bullesonBubbleClick, et un symbole d'une Carte à symbolesonSymbolClick, en svg comme via le test de collision du canvas ; le clic épingle toujours l'infobulle. Les web components émettentmichi-vz:nodeclick,michi-vz:linkclick,michi-vz:bubbleclicketmichi-vz:symbolclick. - Colonnes Sankey dans votre ordre, flux fins survolables.
nodeSort: "input"garde l'ordre des nœuds et des liens donné dans une colonne, pour qu'un nœud « Reste du monde » reste en dernier ;minLinkValueimpose une épaisseur minimale aux filets tandis que les infobulles, le contexte et les totaux gardent les vraies valeurs. - Glisser une bulle. Avec
draggable, une bulle suit le pointeur, ses voisines s'écartent, et au relâchement la gravité de la grappe remet tout en place. Un glisser ne compte jamais comme un clic. Sur le web component la prop s'appellebubbleDraggable, cardraggableappartient à HTMLElement. - Symboles placés depuis la géographie. Un élément de carte à symboles peut omettre
lng/latquand une entitégeographyporte songeoId(ouid) : il est dessiné au centroïde de cette entité, donc des lignes codées ISO n'ont besoin d'aucune table de coordonnées.labelFormatterdéfinit le texte à l'intérieur d'un symbole. - Codes courts dans les petites bulles. Le
coded'un élément de Graphique à bulles (un code ISO, par exemple) n'est dessiné dans la bulle que lorsque le libellé complet ne tient pas ; auparavant il remplaçait le libellé dès qu'il était renseigné.
v1.13.4
Versions des paquets : core 1.33.0 · wc 1.22.0 · angular 1.19.0 · react 1.13.4 · vue, svelte 1.9.4 · examples 1.6.0 · devtools 0.3.6 · insights 0.2.41.
- Des cartes qui gardent leur disposition sur tout écran. Une Carte à symboles avec
fit: "width"est disposée une seule fois à sa taille de conception et s'adapte à la page : les tuiles hexagonales ne bougent plus quand la fenêtre change de taille.
v1.13.3
Versions des paquets : core 1.32.0 · wc 1.21.3 · angular 1.18.3 · react 1.13.3 · vue, svelte 1.9.3 · examples 1.5.0 · devtools 0.3.5 · insights 0.2.40.
- Les tuiles hexagonales gardent leurs voisins dans l'ordre. Avec
honeycomb.placement: "geographic", une tuile de la Carte à symboles qui doit bouger parce que sa cellule est occupée prend la cellule libre la plus proche de sa vraie position, et les voisines qui se liraient à l'envers sont échangées.honeycomb.reserve: "all"garde la même disposition quand les valeurs changent, et la nouvelle optiontiled'un marqueur pose une épingle sur une tuile où qu'elle soit.
v1.13.2
Versions des paquets : core 1.31.2 · wc 1.21.2 · angular 1.18.2 · react 1.13.2 · vue, svelte 1.9.2 · examples 1.4.2 · devtools 0.3.4 · insights 0.2.39.
- Des infobulles lisibles au bord droit. Chaque graphique place maintenant son infobulle à gauche du curseur quand la place manque à droite, du graphique ou de la fenêtre. Le treemap, le camembert, le sankey et plusieurs autres graphiques ne le faisaient pas, et une infobulle près du bord pouvait aussi être écrasée en une colonne étroite.
v1.13.1
Versions des paquets : core 1.31.1 · wc 1.21.1 · angular 1.18.1 · react 1.13.1 · vue, svelte 1.9.1 · examples 1.4.1 · devtools 0.3.3 · insights 0.2.38.
- Valeurs négatives dans le Barres empilées verticales. Les valeurs négatives s'empilent maintenant vers le bas depuis 0 et les positives vers le haut, comme les colonnes empilées de Highcharts ; avant, elles étaient dessinées sans hauteur. Les graphiques entièrement positifs restent identiques.
v1.13.0
Versions des paquets : core 1.31.0 · wc 1.21.0 · angular 1.18.0 · react 1.13.0 · vue, svelte 1.9.0 · examples 1.4.0 · devtools 0.3.2 · insights 0.2.37.
- Valeurs par défaut de l'application.
setMichiVzDefaultsdéfinit une seule fois pour toute l'application la palette, la police, les coins des barres et des tuiles et l'apparence de l'infobulle, commeHighcharts.setOptions. Une prop sur un graphique l'emporte toujours. Chaque paquet de framework l'exporte, et svg, canvas et webgpu dessinent le même résultat. - Des coins arrondis partout. Le Treemap reçoit
tileRadius(1 par défaut ; les tuiles canvas étaient carrées et correspondent maintenant au svg), et les graphiques à barres comparables arrondissent aussi leurs coins en webgpu.
v1.12.8
Versions des paquets : core 1.30.0 · wc 1.20.0 · angular 1.17.0 · react 1.12.8 · vue, svelte 1.8.8 · examples 1.3.0 · devtools 0.3.1 · insights 0.2.36.
- Un remplissage et une dernière valeur pour le Graphique en courbes.
areaFillremplit la zone sous chaque ligne avec sa propre couleur, en s'estompant du haut du graphique jusqu'à la ligne de base (de 0,5 à 0 par défaut ;topOpacity,bottomOpacityetbaselinele modifient).lastPointLabelaffiche la dernière valeur de chaque série au-dessus de son dernier point et la garde dans le graphique ; passez unformatterpour des unités ou des nombres abrégés comme « 887k USD ». Les deux sont désactivés par défaut, fonctionnent en svg et en canvas, et restent dans les exports d'image. Un graphiquerenderer="webgpu"se dessine en canvas tant queareaFillest actif.
v1.12.7
Versions des paquets : core 1.29.0 · wc 1.19.0 · angular 1.16.0 · react 1.12.7 · vue, svelte 1.8.7 · examples 1.2.0 · devtools 0.3.0 · insights 0.2.35.
- Une Fontaine (Jet d'Eau) plus simple. Chaque jet est désormais une tige qui monte jusqu'à un gros point (la valeur habituelle), une fontaine en cloche de la plus basse à la plus haute valeur, et des petits points, un par mesure réelle, rangés dans la fontaine à leur hauteur exacte. Donnez à chaque élément
lowethigh, ousamples(valuepeut alors être omis : la mesure du milieu est utilisée), etforecast: truepour une prévision, dessinée en pointillés avec un gros point creux. La page du graphique commence par une clé de lecture et 16 exemples du quotidien : trajets, délais de livraison, prix, sommeil. - Des lignes qui comptent pour vous.
referenceLinestrace une ligne comme « Temps que je prévois : 45 min » et, avecgoodSide, affiche « 17 sur 20 en moins de 45 min » sous chaque jet.showValueLabelsaffiche la valeur habituelle et les deux extrémités sous chaque jet, avec vos mots (endLabels,labels,sampleWord) ;yAxisTitleindique dans quel sens c'est mieux ;readingGuideajoute une clé d'une ligne qui ne nomme que les marques dessinées.showRangeetshowSamplesmasquent la fontaine et les petits points, etdriftincline le haut comme le jet de Genève dans le vent (désactivé par défaut). Le survol, l'épinglage et Échap fonctionnent de la même façon en svg, canvas et WebGPU, et les couleurs ne bougent pas quand une série est désactivée. - Mettre à jour une fontaine depuis 1.28.
style,frothLayers,bloomExponent,stemFraction,showDroplets,showMistainsi quedensityetleandes éléments sont ignorés, chacun avec un avertissementignored-option. En TypeScript,valueetspreadsont désormais facultatifs, ettooltipFormatterreçoit l'élément avec savaluerésolue. La fontaine prend maintenant en chargeisLoading,isNodataetnoDataLabel: undataSetvide affiche le message « pas de données ». Les hôtes React et Vue de la fontaine font 900 × 480 par défaut. seekcherche d'abord la période.timeline().seek(2021)va maintenant sur la période 2021, que vos dates soient des nombres ou des chaînes ; un nombre ne compte comme une position que si aucune période ne correspond. Un code qui passait une position qui est aussi une valeur de période, commeseek(2)sur les mois 1 à 12, va maintenant sur cette période : utilisez le nouveauseekIndex(i)pour aller par position, comme le curseur intégré.- Dates des axes à l'ouest d'UTC. Les étiquettes annuelles et mensuelles des axes ne s'affichent plus avec un an ou un mois d'avance pour les lecteurs des Amériques, sur tous les graphiques qui ont un axe de dates.
- Des DevTools qui voient plus.
<MichiVzDevtools />trouve maintenant les graphiques montés dans le même commit React et les web components de la page. Nouvel onglet Props, un tableau Items avec les commandes Highlight et Disable construites à partir des données de chaque graphique, un inspecteur SVG dans l'onglet Hit-test, et un avertissement quandhighlightItemsoudisabledItemsrebondissent plus de 10 fois par seconde.
v1.12.6
Versions des paquets : core 1.28.0 · wc 1.18.0 · angular 1.15.6 · react 1.12.6 · vue, svelte 1.8.6 · examples 1.1.19 · devtools, insights 0.2.34.
- Un anneau extérieur arrondi pour Graphique radar.
niceMaxValuearrondit l'anneau extérieur à un nombre rond lorsquemaxValuen'est pas défini : la dernière graduation « ronde » de [0, la plus grande valeur], avec les mêmes pas 1/2/5 × 10ⁿ que les axes d3, pour que l'étiquette extérieure indique 80 plutôt que 73.trueprendringscomme nombre de graduations et un nombre le fixe. UnmaxValueexplicite l'emporte toujours. L'arrondi est aussi exporté sous le nomniceRadarMax(dataMax, tickCount), pour qui veut un anneau fixe quand on masque des séries dans la légende.@michi-vz/wcl'accepte comme propriété et@michi-vz/angularla transmet. - Des palettes nommées pour Carte choroplèthe et ailleurs.
sequentialScheme(name, count)renvoie les palettes séquentielles à une teinte de ColorBrewer - blues, greens, greys, oranges, purples, reds - de 3 à 9 couleurs (borné), les mêmes listes que d3-scale-chromatic, si bien qu'uncolorScale.rangen'a plus besoin de d3.SEQUENTIAL_SCHEME_NAMESliste les noms.
v1.12.5
Versions des paquets : core 1.27.0 · wc 1.17.0 · angular 1.15.5 · react 1.12.5 · vue, svelte 1.8.5 · examples 1.1.18 · devtools, insights 0.2.33.
- Aires superposées pour Graphique en aires.
stacked: falsedessine chaque série de zéro jusqu'à sa propre valeur au lieu de l'empiler sur les précédentes : un remplissage translucide avec une ligne le long de son bord supérieur, en svg, canvas et WebGPU. À utiliser pour des séries qui ne s'additionnent pas - parts, taux, indices - où le bord supérieur d'un empilement afficherait un total qui ne veut rien dire. L'axe y va jusqu'à la plus grande valeur isolée, les grandes aires sont dessinées en premier pour que les petites restent visibles, et le survol retient la série dont le bord supérieur est le plus proche du pointeur.stackOffset: "expand"est ignoré dans ce mode et signalé par un avertissement de donnéesignored-option. La valeur par défaut restetrue.@michi-vz/wcl'accepte comme propriété et@michi-vz/angularla transmet. - Mise en avant au survol pour Sankey. Avec
hoverHighlight, survoler un nœud met en avant ce nœud, chaque flux qui y entre ou en sort et les nœuds à leur autre extrémité ; survoler un flux met en avant ce flux et ses deux nœuds. Tout le reste s'estompe au niveau qu'utilisehighlightItems. En svg, les marques sont mises à jour sur place : l'élément sous le pointeur n'est jamais remplacé. Quitter rétablit l'état normal, et une infobulle épinglée garde sa mise en avant jusqu'à ce qu'elle soit détachée. Désactivé par défaut.@michi-vz/wcaccepte un attributhover-highlightet@michi-vz/angulartransmet la propriété. Avec le moteur de rendu WebGPU, survoler un flux affiche désormais aussi son infobulle. - Les liens de l'Arbre radial en svg sont de fins traits gris, comme en canvas. Les chemins des liens n'avaient pas de remplissage défini : le navigateur remplissait chaque rayon en noir et l'arbre apparaissait en coins sombres.
v1.12.4
Versions des paquets : core 1.26.0 · wc 1.16.0 · angular 1.15.4 · react 1.12.4 · vue, svelte 1.8.4 · examples 1.1.17 · devtools, insights 0.2.32.
- Rayon des coins pour Barres comparables et Barres comparables verticales.
barRadiusfixe le rayon des coins de chaque barre, en px. La valeur par défaut reste 5 : rien ne change tant que vous ne la réglez pas ;0donne des coins carrés, 2 à 4 des coins presque carrés. C'est utile sur petit écran, où les demi-bandes groupées et les colonnes étroites ne font plus que quelques px d'épaisseur et où un rayon de 5px transforme chacune en pilule. Le rayon dessiné ne dépasse jamais la moitié de la largeur ou de la hauteur de la barre, et le svg le borne désormais exactement comme le canvas - auparavant, le svg laissait le navigateur borner rx et ry séparément, ce qui donnait aux barres de moins de 10px des coins légèrement elliptiques. Le moteur de rendu expérimental WebGPU dessine toujours des coins carrés.@michi-vz/wcaccepte un attributbar-radiuset@michi-vz/angulartransmet la propriété.
v1.12.3
Versions des paquets : core 1.25.0 · wc 1.15.0 · angular 1.15.3 · react 1.12.3 · vue, svelte 1.8.3 · examples 1.1.16 · devtools, insights 0.2.31.
- Jauge (anneaux) : les annotations répondent d'elles-mêmes.
annotationTooltipFormatterdonne au marqueur de valeur, à chaque repère et à chaque extrémité son propre affichage au survol, ce qui permet aux étiquettes de l'arc de rester courtes. Survoler une annotation ne touche pas à l'anneau actif - l'affichage central ne bouge pas - et renvoyernulln'affiche rien pour cette annotation. La détection se fait sur la géométrie au niveau de l'hôte plutôt que sur le DOM : le comportement est identique en svg, canvas et WebGPU, et un anneau sans valeur garde les repères et les extrémités de son échelle survolables.@michi-vz/wcet@michi-vz/angulartransmettent la propriété.
v1.12.2
Versions des paquets : core 1.24.0 · wc 1.14.3 · angular 1.15.2 · react 1.12.2 · vue, svelte 1.8.2 · examples 1.1.15 · devtools, insights 0.2.30.
- Jauge (anneaux) : positionnement dans une plage. Cinq propriétés additives :
minfait démarrer l'échelle ailleurs qu'à zéro (les valeurs d'anneau et les repères sont ramenés dans[min, max]avec un avertissement de données),valueMarkerépingle la valeur de chaque anneau sur l'arc avec un cercle cerclé de blanc et un trait radial,ticksajoute des repères sur l'anneau extérieur avec une légende et une valeur formatées par le consommateur (valueFormattern'est que le repli),endLabelsnomme les deux extrémités d'un balayage partiel, etsweepFitajuste une jauge partielle à la boîte englobante de son balayage et ancre l'affichage central à l'intérieur de l'arc. Les annotations sont en svg dans chaque moteur de rendu - un calque au-dessus de la couche peinte en mode canvas et WebGPU - donc le CSS du consommateur les atteint partout et les exports svg et PNG les incluent. La jauge ignore désormais son échafaudage selon la règle partagée « chargement à vide » comme les autres graphiques, et le contexte exposemin.@michi-vz/wcet@michi-vz/angulartransmettent les propriétés ;@michi-vz/angular/gauge-chartréexporteGaugeTick,GaugeEndLabeletGaugeValueMarker.
v1.12.1
Versions des paquets : core 1.23.0 · wc 1.14.2 · angular 1.15.1 · react 1.12.1 · vue, svelte 1.8.1 · examples 1.1.14 · devtools, insights 0.2.29.
sweepAngleetgradientsur la Jauge (anneaux).sweepAngle(en degrés, dans le sens horaire depuisstartAngle, 360 par défaut) réduit la jauge d'un cercle complet à un arc partiel -startAngle: -90, sweepAngle: 180donne la demi-jauge classique. La piste de fond et l'arc de valeur de chaque anneau balaient le même arc partiel, et la valeur d'un anneau est mesurée par rapport à cette plage plutôt qu'à un cercle complet ; une valeur non définie, nulle ou négative retombe sur un cercle complet de 360°, pas sur une jauge vide.gradient(unstring[]au niveau du graphique, ou par anneau sur la donnée de l'anneau, qui l'emporte) peint l'arc d'un anneau avec un dégradé linéaire multi-étapes ancré sur le balayage complet plutôt que sur la portion dessinée, de sorte qu'une couleur donnée reste toujours à la même valeur. Les trois moteurs de rendu respectent les deux props, et@michi-vz/wcainsi que@michi-vz/angularles transmettent.
v1.12.0
Versions des paquets : core 1.22.0 · wc 1.14.1 · angular 1.15.0 · react 1.12.0 · vue, svelte 1.8.0 · examples 1.1.13 · devtools, insights 0.2.28.
- Imports par sous-chemin, par graphique pour
@michi-vz/angular,@michi-vz/react,@michi-vz/vueet@michi-vz/svelte, à l'image de@michi-vz/wc: importez@michi-vz/<paquet>/<clé-du-graphique>(kebab-case) pour n'embarquer qu'un seul graphique au lieu du barrel, par ex.@michi-vz/angular/radar-chart. Le barrel générique fonctionne toujours et enregistre toujours tous les graphiques - c'est purement additif. Voir Importer un seul graphique. - Survol du Graphique radar : le pôle survolé est désormais résolu sur le moteur SVG aussi, à l'image de canvas et WebGPU :
tooltipFormatterreçoitdate(le libellé d'axe du pôle survolé) sur chaque moteur de rendu, le survol suit le curseur au lieu de se déclencher une seule fois à l'entrée, et les séries atténuées ne sont plus testées au survol. Attention si votre code renvoieonHighlightItemvershighlightItems: quand une série est géométriquement imbriquée dans une autre (typiquement une année antérieure, plus basse sur chaque axe), survoler la série extérieure atténue l'intérieure, et comme les séries atténuées ne sont pas testées au survol, l'intérieure devient impossible à survoler tant que le curseur ne quitte pas entièrement la série extérieure.
v1.11.12
Versions des paquets : core 1.21.0 · wc, angular 1.14.0 · react 1.11.12 · vue, svelte 1.7.12 · examples 1.1.12 · devtools, insights 0.2.27.
- Tuiles hexagonales sur la Carte à symboles :
shape: "hexagon"etpositionMode: "honeycomb"transforment la carte à symboles en carte à tuiles - des hexagones égaux accrochés à un réseau hexagonal (résolution déterministe des collisions, avertissementlayout-overflow), la valeur portée par uncolorScaleavecnoDataColorpour les éléments sansvalue, des décalagesoffsetpar élément, des épingles décorativesmarkers, et la projectiongeoNaturalEarth1. Le contexte exposex/y,hasValue,noValueCount,shape,positionMode,colorScaleetmarkers.
v1.11.11
Versions des paquets : core 1.20.1 · wc 1.13.1 · angular 1.13.0 · react 1.11.11 · vue, svelte 1.7.11 · examples 1.1.11 · devtools, insights 0.2.26.
- Infobulle partagée sur le Graphique en courbes SVG :
sharedTooltip(une seule infobulle listant toutes les séries à l'année survolée, avec épinglage au clic) fonctionne désormais aussi avec le rendu SVG par défaut ; elle ne s'appliquait qu'aux rendus canvas/WebGPU, un graphique SVG retombant silencieusement sur l'infobulle par courbe. - Types Angular :
@michi-vz/angularréexporteDataPoint,LineDataItem,Margin,Filter,CurveType,XaxisDataType,MouseLineConfigetSinglePointLineConfig.
v1.11.10
Versions des paquets : core 1.20.0 · wc 1.13.0 · angular 1.12.9 · react 1.11.10 · vue, svelte 1.7.10 · examples 1.1.10 · devtools, insights 0.2.25.
- Clics sur les tuiles du Treemap : un nouveau callback
onTileClick(leaf, event)signale la tuile feuille cliquée (le même contexte que reçoit le formateur d'infobulle) sur les rendus SVG, canvas et WebGPU ; le composant web l'émet sous le nommichi-vz:tileclick. Le clic épingle toujours l'infobulle.
v1.11.9
Versions des paquets : core 1.19.1 · wc, angular 1.12.8 · react 1.11.9 · vue, svelte 1.7.9 · examples 1.1.9 · devtools, insights 0.2.24.
- Ponts de données manquantes courbés sur le Graphique en courbes : les segments en pointillés suivent désormais la même courbe que la ligne pleine qui les entoure, au lieu d'être rectilignes.
- Réticule au-dessus des marques canvas : sur les graphiques en courbes et en aires rendus en canvas/WebGPU, la ligne de survol reste visible au-dessus des marques peintes.
v1.11.8
Versions des paquets : core 1.19.0 · wc, angular 1.12.7 · react 1.11.8 · vue, svelte 1.7.8 · examples 1.1.8 · devtools, insights 0.2.23.
- Titre de légende de taille sur plusieurs lignes pour le Nuage de points :
dScaleLegend.titleaccepte aussi un tableau de chaînes, rendu en lignes empilées au-dessus des arcs de taille: les titres traduits longs passent à la ligne au lieu de déborder du bord droit du graphique.
v1.11.7
Versions des paquets : core 1.18.0 · wc, angular 1.12.6 · react 1.11.7 · vue, svelte 1.7.7 · examples 1.1.7 · devtools, insights 0.2.22.
- Fini les axes d'état vide : les graphiques n'affichent plus axes ni marques pendant un chargement sans rien à dessiner, et le Graphique d'écart comme le Nuage de points respectent désormais
isLoading/isNodata(overlays +data-mv-state) au lieu de dessiner un axe effondré au centre quand les données sont vides. Un rechargement avec des données encore à l'écran conserve ses axes. Nouveaux exports core :isEmptyDataSet,shouldSkipScaffold.
v1.11.6
Versions des paquets : core 1.17.0 · wc, angular 1.12.5 · react 1.11.6 · vue, svelte 1.7.6 · examples 1.1.6 · devtools, insights 0.2.21.
yAxisDomainpartiel sur le Graphique en courbes : chaque borne peut désormais valoirnullpour rester dérivée des données.[0, null]fixe la ligne de base à 0 tandis que le maximum continue de suivre les séries visibles - il se recalcule lors des bascules de légende et des tranches Top/Bottom-N, exactement comme le domaine entièrement dérivé. Une borne dérivée ne croise jamais une borne fixée (des données toutes négatives sous[0, null]donnent[0, 0]plutôt qu'un axe inversé). Un[min, max]de nombres se comporte comme avant.
v1.11.5
Versions des paquets : core 1.16.2 · wc, angular 1.12.4 · react 1.11.5 · vue, svelte 1.7.5 · examples 1.1.5 · devtools, insights 0.2.20.
- Les éléments de légende désactivés conservent leur position sur le nuage de points, la barre-haltère et le graphique en aires. Leur légende était dérivée des données déjà filtrées : un libellé cliqué (désactivé) disparaissait de
legendDataet les replis côté consommateur le rajoutaient en fin de légende. Les trois conservent désormais le libellé marquédisabled: trueà sa position d'origine, le même contrat que les légendes du diagramme empilé (core 1.5.6) et des barres comparables (core 1.12.2). Le contexte du nuage de points gagne aussi un résuméseriespar libellé (label/code/last) construit à partir des lignes avant filtrage : un libellé masqué garde ainsi sa valeur la plus récente pour le tri de légende côté consommateur. contextSignaturereste bornée avec le nouveau champseries: il passe par le même hachage que les lignes et la légende au lieu d'être sérialisé, la signature d'un nuage de 50 000 points reste donc de quelques centaines d'octets.
v1.11.4
Versions des paquets : core 1.16.1 · wc, angular 1.12.3 · react 1.11.4 · vue, svelte 1.7.4 · examples 1.1.4 · devtools, insights 0.2.19.
- Le classement Top/Bottom ignore les séries sans donnée à la date d'ancrage. Sur le graphique en ligne, une série sans valeur finie à la date d'ancrage
filter.datese classe désormais EN DERNIER dans les deux sens de tri. L'ancienne sentinelle ne la classait dernière que sousdesc— sousasc(Bottom-N) elle se classait première, si bien que le Bottom-N remplissait ses places avec les séries sans donnée à l'année d'ancrage au lieu des valeurs réelles les plus basses. Une ligne présente à l'ancrage mais portantnull/NaNcompte aussi comme manquante. - Les graduations de l'axe des dates ne dépassent plus les courbes dessinées. Les graduations candidates du graphique en ligne (et l'ensemble « présent » de
fillPeriodTicks) proviennent désormais du même ensemble classé/découpé/filtré pardisabledItemsque le domaine x. Auparavant, une série du pool écartée du classement mais portant une période plus récente que toute série dessinée peignait une graduation au-delà du bord du tracé, laissant un tronçon d'axe vide après la dernière courbe.
v1.11.3
Versions des paquets : core 1.16.0 · wc, angular 1.12.2 · react 1.11.3 · vue, svelte 1.7.3 · examples 1.1.3 · devtools, insights 0.2.18.
- Masquer une série classée ne comble plus le vide. Sur le graphique en ligne, les barres comparables horizontales et les barres comparables verticales, le
filterTop/Bottom classe et découpe désormais l'ensemble COMPLET avant le retrait desdisabledItems— masquer l'une des N premières séries via la légende dessine donc N−1 séries au lieu de laisser la (N+1)-ième prendre la place libérée (l'ordre que le graphique gap et le découpage de groupes des barres empilées ont toujours utilisé). Tant qu'unfilterest actif,legendDataconserve la série masquée en pastille grisée etrenderedRankedIdsliste toujours son code, si bien qu'une interface de sélection consommatrice reste stable à travers les bascules afficher/masquer. Sansfilter, rien ne change.
v1.11.2
Versions des paquets : core 1.15.0 · wc, angular 1.12.1 · react 1.11.2 · vue, svelte 1.7.2 · examples 1.1.2 · devtools, insights 0.2.17.
- Le contexte indique désormais ce qui est réellement affiché. Nouveau champ
renderedRankedIdssur le ChartContext partagé : les codes des séries effectivement dessinées, dans l'ordre de rendu (aprèsdisabledItemset le tri/découpage dufilterTop/Bottom), émis par les builders de Graphique en courbes, Barres empilées verticales, Barres comparables, Barres comparables verticales et Graphique d'écart. Lecodepar série est aussi exposé sur les contextes stack et comparable-bar, et les codes numériques ne sont plus ignorés par le graphique empilé. Permet à une interface de sélection de suivre un graphique classé (le motif « puces Top-N »).
v1.11.1
Versions des paquets : core 1.14.0 · wc, angular 1.12.0 · react 1.11.1 · vue, svelte 1.7.1 · examples 1.1.1 · devtools, insights 0.2.16.
- Les barres empilées verticales passent à l'horizontale. Nouvelle propriété additive
layout: "horizontal": des lignes sur un axe y en bandes (les libellés HTML partagés avec ellipse, donc les longs noms de catégories restent lisibles) avec des segments empilés vers la droite depuis x(0). Les contrats de données, d'attribution des couleurs, de légende, d'infobulle et de marqueur manquant sont identiques à la disposition verticale, et les propsxAxis*continuent de formater l'axe des catégories (yAxis*/yTicksl'axe des valeurs) dans les deux orientations. Les libellés d'abréviation de série,xAxisModeettimelinerestent verticaux uniquement.
v1.11.0
Versions des paquets : react, wc, angular 1.11.0 · core 1.13.0 · vue, svelte 1.7.0 · examples 1.1.0 · devtools, insights 0.2.15.
- Nouveau graphique : Jauge (anneaux). Une jauge à anneaux concentriques - un anneau par élément, de l'extérieur vers l'intérieur, chacun balayant
value/maxd'un cercle complet sur une piste de fond. Le survol active un anneau et pilote l'affichage central intégré ; une valeurnullne dessine que la piste. Épaisseur et espacement des anneaux, couleurs et opacités par anneau, angle de départ, extrémités arrondies et contenu central sont configurables, avec les moteurs svg, canvas et webgpu partageant le contrat de sonde de couleur standard. - Zoom par glissement sur le graphique en courbes. Activez la propriété
zoom: faites glisser une plage horizontale dans le tracé pour zoomer le domaine x (un rectangle de sélection le prévisualise), avec un bouton « Reset zoom » intégré,minRange, un rappelonZoomChangeetresetZoom()/setZoomDomain()pour le contrôle programmatique. Les marques sont rognées au tracé ; graduations, réticule et infobulles suivent le domaine zoomé. - Les exports PNG peuvent porter un titre et une ligne de source.
chartToPngDataUrlaccepte des blocs de textetitleetcaption(retour à la ligne automatique, alignement/taille/couleur configurables) composés au-dessus et en dessous du graphique.
v1.10.4
Versions des paquets : react, wc, angular 1.10.4 · core 1.12.2 · vue, svelte 1.6.6 · devtools, insights 0.2.14.
- Les légendes des barres comparables ne se réorganisent plus quand on désactive un élément. Sur les graphiques Barres comparables et Barres comparables verticales, un libellé listé dans
disabledItemsdisparaissait entièrement dulegendDataémis ; les légendes construites dessus le rajoutaient ailleurs - un retri visible (et parfois un changement de couleur) à chaque clic sur la légende. Un libellé désactivé reste désormais danslegendData, marquédisabled: true, à sa place d'origine ; les barres, elles, continuent de l'exclure. C'est le contrat que les barres empilées verticales ont depuis core 1.5.6.
v1.10.3
Versions des paquets : react, wc, angular 1.10.3 · core 1.12.1 · vue, svelte 1.6.5 · devtools, insights 0.2.13.
- Plus d'infobulle parasite « Chart ». Chaque graphique injectait un
<title>svg avec « Chart » en valeur par défaut pour le SEO, et les navigateurs affichent un<title>svg racine comme infobulle native au survol - survoler n'importe quel graphique faisait donc apparaître une petite étiquette « Chart ». L'élément n'est désormais injecté que si vous définissez la proptitle; les robots d'indexation conservent les métadonnées JSON-LD, et les lecteurs d'écran ne sont pas concernés (le svg estaria-hidden, la table a11y masquée reste leur représentation). - Les infobulles du Graphique en courbes retrouvent leur série. Le point transmis à
tooltipFormatterporte de nouveau lelabelde sa série ({ ...point, label }), comme dans la bibliothèque d'avant le monorepo. Les infobulles qui affichent le nom de la série depuispoint.labelrendaient cette ligne vide depuis la migration.
v1.10.2
Versions des paquets : react, wc, angular 1.10.2 · core 1.12.0 · vue, svelte 1.6.4 · devtools, insights 0.2.12.
- Un axe de dates chargé incline désormais ses étiquettes au lieu d'en supprimer la plupart. Tous les graphiques à axe de bandes (Barres empilées verticales, Barres comparables verticales, Fontaine, Graphique en ruban, Nuage de points) renonçaient à la rotation dès que les bandes devenaient étroites et affichaient à plat un sous-ensemble d'étiquettes. Une étiquette inclinée n'a besoin que de son dégagement diagonal, environ un quart de ce qu'exige une étiquette à plat : le graphique fait donc pivoter un sous-ensemble et conserve environ trois fois plus d'étiquettes. La rotation n'est retenue que si elle apporte réellement des étiquettes.
xAxisMode: "horizontal"force toujours l'affichage à plat. - Corrigé : les étiquettes conservées pouvaient se chevaucher. L'algorithme garantissait COMBIEN d'étiquettes conserver, jamais leur écartement, et pouvait donc choisir deux bandes voisines. Le chevauchement est maintenant mesuré exactement - la largeur propre de chaque paire à plat, l'écart perpendiculaire une fois incliné - et les étiquettes en conflit sont retirées. La première et la dernière sont toujours conservées, afin que l'axe montre toujours son étendue complète.
- Les catégories
YYYYMMsuivent le calendrier. Un axe mensuel se cale sur de vrais repères (chaque janvier, jan./juil., jan./avr./juil./oct.) au lieu de tomber là où l'arrondi décimal le plaçait. Cet arrondi était aussi la cause du chevauchement ci-dessus : il n'a aucun sens sur un champ de mois en base 12 et plaçait deux graduations de part et d'autre de chaque changement d'année. Les années à quatre chiffres sont inchangées, les décennies rondes leur convenant déjà.
v1.10.1
Versions des paquets : react, wc, angular 1.10.1 · core 1.11.1 · vue, svelte 1.6.3 · devtools, insights 0.2.11.
- Corrigé : sur Barres empilées verticales, les étiquettes de dates de l'axe des x ne se superposent plus aux abréviations de séries. Lorsqu'un DataSet fournit
seriesKeyAbbreviation- la lettre courte affichée sous chaque colonne de groupe - les étiquettes de graduation commencent désormais sous cette ligne au lieu de la partager. Le problème apparaissait sous forme de texte superposé dès qu'un axe chargé inclinait ses étiquettes à -45°, en particulier avec des dates mensuellesMM-YYYY. Le graphique réserve également la marge inférieure supplémentaire correspondante, afin que les étiquettes inclinées restent visibles. Les graphiques dont les DataSets ne portent aucune abréviation sont inchangés.
v1.10.0
Versions des paquets : react, wc, angular 1.10.0 · core 1.11.0 · vue, svelte 1.6.2 · devtools, insights 0.2.10.
- Faire défiler les années, sur chaque graphique. La nouvelle prop opt-in
timelineajoute un bouton lecture + un curseur d'années intégrés (et un contrôleur headlesschart.timeline()) aux 21 graphiques. Les graphiques à axe temporel comme Courbes et Aires tracent leurs marques jusqu'à l'année active et balaient en douceur pendant la lecture ; les graphiques instantanés comme Secteurs, Gap et Nuage de points affichent une période à la fois avec des valeurs qui glissent entre les années ; Treemap et Arbre radial animent des hiérarchies entières depuis des noeuds racines taguésdate; Sankey joue sur des liens taguésdate; et Radar et Bar-Bell utilisent un nouveau champ de ligneperiod. Désactivé par défaut partout, et chaque page de graphique a une démo interactive. - Animation de révélation sur chaque graphique. La prop opt-in
progressiveDrawfait apparaître les marques de gauche à droite au montage - et sur Courbes, des étiquettes suivent la pointe de chaque ligne qui grandit.replay()rejoue la révélation à la demande. - Les deux fonctionnalités marchent avec les rendus
svgetcanvas, respectentprefers-reduced-motion(le graphique s'affiche entièrement tracé, instantanément) et restent volontairement inertes sur le rendu expérimentalwebgpu. - Corrigé : un re-rendu pendant une animation en cours la reprend désormais à sa position actuelle au lieu de sauter à la fin - les wrappers de framework mettent à jour le graphique juste après le montage, ce qui annulait auparavant chaque autoplay de montage.
- Corrigé : l'URL CDN nue du bundle web component (
cdn.jsdelivr.net/npm/@michi-vz/wc) pointe désormais vers le bundle navigateur autonome : un simple<script type="module">fonctionne sans devoir épeler le chemin/dist/...complet.
v1.9.0
Versions des paquets : react 1.9.0 · core 1.10.0 · wc, angular 1.9.1 · vue, svelte 1.6.1 · devtools, insights 0.2.9.
- Téléchargez n'importe quel graphique en image ou en CSV. Nouveaux utilitaires d'export dans core :
chartContextToCsv(ctx)transforme legetContext().a11yTablede n'importe quel graphique (la table de données complète, jamais tronquée, que chaque graphique embarque) en CSV RFC 4180 sans code par graphique, etchartToStyledSvgString/chartToStyledSvgDataUri/chartToPngDataUrlreconstruisent un SVG ou un PNG autonome et correctement stylé. Les images exportées perdaient jusqu'ici le quadrillage, les étiquettes d'axes et la ligne zéro, car le CSS des graphiques vit dansadoptedStyleSheets, invisible pour un sérialiseur naïf ; l'export PNG superpose aussi les marques du renderer canvas sur les axes SVG. Les handles React gagnentgetElement()pour fournir l'élément aux utilitaires sans requête DOM globale fragile. - Une seule infobulle, toutes les séries. Le
sharedTooltipde LineChart (avec unsharedTooltipFormatteroptionnel) affiche une infobulle unique listant la valeur de chaque série à l'année la plus proche, à côté du réticule, au lieu de la seule série la plus proche. Relayé par le web component et le wrapper Angular. Voir Line. - La table a11y porte désormais les données elles-mêmes. Le
a11yTablede LineChart devient une table large par période : une colonne par valeur x étiquetée comme l'axe, une ligne par série,-pour les trous. Un export CSV depuisgetContext()contient donc chaque point tracé. Les statistiques par série restent surcontext.series; c'est le seul changement de comportement de cette version. - Parité d'axes pour le graphique Gap. Gap gagne
showZeroLineForXAxis(une ligne verticale pleine à x=0, désormais tracée indépendamment deshowGrid) etmaxBarHeight(un graphique de 1 à 2 lignes n'étire plus ses barres sur toute la hauteur), et les axes de valeurs numériques de Gap et de Comparable inclinent les graduations trop denses à -45° avant de les éclaircir, comme le faisaient déjà les axes de dates. - Des étiquettes corrigées sur les graphiques à bandes. Les étiquettes de ligne se limitent à deux lignes avec points de suspension au lieu de chevaucher leurs voisines ; les longs libellés de catégories pivotent au lieu d'être éclaircis à tort ; une étiquette de Bubble collée au bord droit bascule à gauche de son point plutôt que d'être rognée ; et Comparable Vertical Bar peint la sous-barre la plus courte au-dessus (une ligne dont la valeur « avant » était la plus petite la cachait entièrement derrière la barre la plus haute), avec la flèche d'évolution désormais centrée au-dessus de chaque paire.
v1.8.1
Versions des paquets : react 1.8.1 · core, wc, angular 1.9.0 · vue, svelte 1.6.0 · devtools, insights 0.2.8.
- Quatre nouveaux graphiques : l'atlas passe à 21. Comparable Vertical Bar (deux colonnes superposées par catégorie, l'« avant » hachuré derrière l'« après » plein, avec une flèche d'évolution au-dessus de chaque paire), et la première famille géographique de la bibliothèque : Choropleth Map (votre propre GeoJSON, 13 projections, coloration par seuils ou par catégories), Symbol Map (bulles lng/lat avec fond de carte discret optionnel) et Radial Tree (dendrogramme radial, cercles dimensionnés au niveau du groupe et de la feuille).
- Axes logarithmiques sur LineChart.
yAxisScale: "log"pour des données couvrant plusieurs décades : les valeurs non positives deviennent manquantes (avec avertissement) et les étiquettes trop denses se réduisent aux puissances de dix. Voir Line. - Vrai empilement 100 % sur AreaChart.
stackOffset: "expand"transforme toute aire empilée en parts du total : un vrai empilement d3, pas un simple rescale d'affichage. Voir Area. - Barres comparables, deux nouveautés.
layout: "grouped"scinde chaque bande en deux moitiés côte à côte au lieu de les superposer, etdeltaIndicatordessine une flèche d'évolution rouge/verte par ligne. Voir Comparable. - Des positions de symboles honnêtes. Le
positionMode: "precise"de Symbol Map garde chaque bulle exactement à son lng/lat projeté (chevauchements permis) au lieu de la simulation anti-chevauchement par défaut : le bon choix dès qu'un fond de carte visible invite à lire les positions au pied de la lettre. Une bascule en direct sur la page Symbol Map montre la différence. - Des étiquettes là où il en manquait. Scatter gagne
pointLabelset un choixdrawOrder(petits au-dessus par défaut, ou l'ordre hérité grands au-dessus) ; Treemap peut afficher la valeur de chaque tuile avectileValueLabels. Les recouvrements de chargement et d'absence de données couvrent désormais aussi Radar, Sankey et Treemap, et les marques s'effacent correctement tant qu'un recouvrement est affiché.
v1.6.5
Versions des packages : react 1.6.5 · core, wc, angular 1.6.0 · vue, svelte 1.5.7 · devtools, insights 0.2.5.
- RibbonChart échange enfin les places. La pile de chaque période est désormais reclassée par valeur : une catégorie qui en dépasse une autre croise visiblement les rubans en montant, tout l'intérêt d'un graphique en ruban, restauré depuis la bibliothèque d'origine. À voir sur la page Ruban : les revenus de la musique aux États-Unis, où le streaming dépasse tout et le vinyle repasse devant le CD.
- Des barres comparables enfin lisibles. La sous-barre la plus courte se dessine de nouveau au-dessus (une barre qui a grandi ne cache plus son « avant »), et le nouveau
colorsBasedMappingdonne sa propre couleur à la barre « avant » : associez une teinte claire opaque àvalueBasedOpacity: 1pour un contraste pâle/plein net dans les deux thèmes. Voir Barres comparables. - Des nuages de bulles sans blocage.
layoutMode: "async"exécute le même tassement de forces déterministe en tranches d'environ 12 ms derrière l'overlay de chargement du graphique : un amas de 3 000 bulles qui gelait la page pendant ~20 secondes ne coûte plus qu'une frame de 50 ms au pire.settleTicksrègle le tassement, des entrées inchangées sautent entièrement la simulation, et la disposition est mémoïsée entre les rendus. Voir la démo « événement de collision » sur Bulles. - Petits réglages, grand confort. L'axe des valeurs du Barre-haltère peut passer sous le tracé (
xAxisPosition: "bottom"), le GapChart accepte unxAxisDomainexplicite (zoomer une histoire d'espérance de vie dans sa bande 35-90), les libellés de lignes du tornado peuvent passer à gauche du tracé (yAxisPosition: "left"), les libellés des pôles du radar ne touchent plus le titre, et le résumé de contexte du tornado nomme désormais son plus grand déséquilibre. - Des libellés de lignes que l'on peut saisir - et parcourir. Sur Gap, Comparable et le tornado, l'option
interactiveRowLabelsfait de chaque libellé de ligne un vrai contrôle : survolez-le ou donnez-lui le focus et une ligne de rappel court jusqu'à sa ligne avec l'infobulle et la mise en évidence ; un clic épingle. La gouttière des libellés se parcourt aussi comme un curseur : faites-la glisser et l'infobulle suit votre pointeur de ligne en ligne, jusqu'aux lignes dont le libellé a été allégé sur un axe dense. À essayer sur les démos de ces pages. - Une légende pour tout. Chaque contexte de graphique porte désormais
legendData, et les graphiques à division (treemap, bulles, comparables) exposent aussi la couleur pâle compagne de chaque étiquette viaLegendItem.paleColor: les démos de la doc s'en servent pour leurs légendes et la bascule « Signification | Paires de couleurs ». - Les axes denses s'allègent seuls. Les libellés de lignes de gap/comparable/dual/barre-haltère (et l'axe instantané de la fontaine) s'échantillonnent en un sous-ensemble lisible au lieu de se superposer à 100+ lignes.
- Doc : appuyez sur les boutons. Chaque page de graphique propose désormais les actions en direct « ✦ Expliquer ce graphique » (le vrai moteur de règles insights, dans votre navigateur) et « 🛠 Essayer les DevTools sur ce graphique », plus de nouveaux exemples qui racontent une histoire : le spectre dimuon du LHC sur Nuage de points, les salaires bruts vs nets de l'UE sur Bulles, et une fresque d'espérance de vie de ~195 pays sur Écart.
- La Fontaine apprend à s'expliquer. La page Fontaine s'ouvre désormais sur un glossaire d'anatomie (chaque partie visible du glyphe a un sens énoncé) et un guide pratique de onze lectures en direct : certitude, stabilité, risque, confiance d'une IA, audiences divisées, typhons philippins et plus, la plupart dans la silhouette symétrique épurée du panache. La symétrie porte aussi du sens : un
lean: 0explicite tient le jet parfaitement droit, unleansigné signale un risque unilatéral, et un jet sansleangarde sa dérive décorative genevoise (rapportée commelean: nulldansgetContext()).
v1.6.1 - v1.6.4
Versions des packages : react 1.6.4 · devtools, insights 0.2.4 · core, wc, vue, svelte, angular 1.5.6. Quatre petites vagues de correctifs entre les versions phares :
- L'axe des valeurs du GapChart, durci trois fois. Les
tickValuesfournis par le consommateur sont filtrés aux valeurs finies, triés et dédupliqués (les entrées dégénérées retombent sur le domaine des données) ; les marques et l'axe ne débordent plus quand destickValuessont passés alors queenableExplicitTickValuesest désactivé ; et les domaines en pourcentage gagnent un rembourrage adapté à la plage, pour qu'un marqueur de référence à zéro se pose sur l'axe au lieu d'en dépasser le bord. - La légende du VerticalStackBar garde ses couleurs. Une clé désactivée reste dans
legendData, marquéedisabled: true: la pastille de légende s'estompe au lieu de disparaître, et les emplacements de couleur sont attribués sur l'ensemble complet des clés - aucune clé ne change de couleur en désactivant puis réactivant. Les barres continuent d'exclure les clés désactivées.
v1.6.0
Versions des packages : react 1.6.0 · devtools 0.2.0 · insights 0.2.0 · core, wc, vue, svelte, angular 1.5.2.
- DevTools 0.2.0 : le bouton bascule du blason Michi. Monter les devtools ne recouvre plus votre application - il démarre sous la forme d'un petit blason flottant (l'emblème de la bibliothèque). Cliquez dessus, ou appuyez sur
Ctrl/Cmd+Shift+M, pour ouvrir le panneau ; l'état ouvert/fermé est mémorisé par navigateur, donc un rechargement le restaure exactement comme vous l'aviez laissé. Un coin déjà pris par un autre widget flottant ? Faites glisser le blason n'importe où - cet emplacement est aussi mémorisé, et la nouvelle optionbuttonPositionchoisit le coin de départ. Le handle a gagnéisOpen(), et<MichiVzDevtools />(react 1.6.0) transmetbuttonPosition. Voir DevTools. - Insights 0.2.0 : liaison inter-jeux de données avec
matchLabels(). Relie les mêmes entités entre deux listes orthographiées différemment (un export CRM contre un export ERP) pour que deux jeux de données ne forment plus qu'un seul graphique joint : meilleure correspondance mutuelle par défaut, filtrée par une marge de confiance, les lignes non appariées étant renvoyées avec une suggestion « vouliez-vous dire ». Le hachage sans modèle fonctionne hors ligne ; le backend MiniLM relie aussi les synonymes, abréviations et traductions. Essayez la démo en direct MatchLab. - Core 1.5.2 : corrections de performance sur les pages lourdes. La protection d'idempotence de
onChartDataProcessedsigne désormais les contextes via un hachage FNV-1a borné plutôt que de sérialiser chaque ligne en chaîne (plusieurs Mo de chaîne par rendu à 50 000 points), et le survol des nuages de points en canvas/WebGPU regroupe la rafale de pointeurs de chaque frame en une seule passerequestAnimationFramefinale. Les grands tableaux de bord restent réactifs sans rien à configurer. - La doc, désormais en quatre langues. Le site parle anglais, français, néerlandais et vietnamien, avec un sélecteur de langue dans la barre de navigation - chaque page de guide, de graphique et d'API est traduite. Les contributions aux traductions sont les bienvenues ; voir le lien Aider à traduire dans le pied de page.
- Une page d'accueil plus nette. La page d'accueil met désormais en avant les DevTools et quatre piliers en langage clair - tout inspecter, des graphiques que les machines lisent, accessible par défaut, et fonctionne en local. Un nouveau pied de page vous invite à mettre une étoile au dépôt, rejoindre la communauté, contribuer et aider à traduire. Le blason Michi est le favicon du site et se trouve à côté du titre de la barre de navigation, et chaque page a une description unique et une carte sociale.
v1.5.0
- Les DevTools arrivent :
@michi-vz/devtools0.1.0, première publication publique. Un panneau intégré à la page (sans extension de navigateur) qui inspecte l'état en direct de chaque graphique à travers huit onglets - Overview (avec édition en direct + Réinitialiser le graphique), Sizing, Scales, Diff, Hit-test, Profiler, Insights, et un audit A11y. Isolé en Shadow DOM, redimensionnable, thème clair + sombre, désactivé en production par défaut avec une entrée/productionneutre, et une seule ligne pour React :<MichiVzDevtools />. Voir DevTools. - Insights 0.1.0 : une IA transparente et locale d'abord.Méthodologie détaille désormais la logique exacte derrière chaque insight ;
describeModelSource()indique ce qu'un backend de modèle téléchargerait et depuis où avant tout chargement ;modelSourceredirige les téléchargements vers un miroir ou des fichiers auto-hébergés (ou les interdit totalement) ; etollamaCaller/openaiCompatCallerconnectent une IA locale (Ollama, LM Studio, llama.cpp) en une ligne sans aucun téléchargement. Les résultats d'anomalies portent désormais leur méthode, leur seuil, et une explication en langage clair. - Core : le hook des devtools a gagné des canaux haute fréquence de tests de collision (hit-test) et de chronométrage des rendus (coût nul lorsque les devtools sont désactivés).
v1.4.0
- Le réticule au survol est de retour - et configurable. La ligne verticale de la souris de LineChart est de nouveau activée par défaut (parité avec l'ancienne version ; le portage l'avait silencieusement désactivée), s'accroche au point de données le plus proche au lieu de suivre le curseur brut, et se masque quand le curseur quitte le graphique - dans les modes SVG, canvas et WebGPU indifféremment. Personnalisez-la par graphique avec
enableMouseLine: { stroke, strokeWidth, strokeDasharray, snap }, ou thématisez-la globalement avec les variables CSS--michi-vz-crosshair/--michi-vz-crosshair-width/--michi-vz-crosshair-dash, ou passezfalsepour la désactiver.
v1.3.0
- Aucune période oubliée sur l'axe des x. Les axes de dates de LineChart conservent désormais toujours la véritable première et dernière période (les graduations temporelles brutes de
d3avaient tendance à s'aligner sur des bornes rondes et à les supprimer), et les libellés surchargés pivotent automatiquement de -45° puis sont réduits à environ 5 au lieu de disparaître silencieusement. - Chronologies continues avec
fillPeriodTicks(Line + Area, opt-in). Une graduation pour chaque période de la plage, pas seulement celles présentes dans les données ; les périodes manquantes s'affichent estompées avec une infobulle « aucune donnée » au survol, personnalisable vianoDataTickTooltipetnoDataTickColor.
v1.2.1
- Chaque page npm renvoie vers ses pages sœurs. Le README de chaque package comporte désormais un tableau Framework packages reliant les six packages, afin que depuis n'importe quel wrapper vous puissiez atteindre les autres. Un lien mort vers le monorepo a été corrigé.
- Les six packages réalignés.
vue,angular,svelteetwcavaient une version de retard sur npm ; ils sont désormais publiés en même temps quecoreetreact, à la même version. - Découvrabilité de la documentation. Le tableau Installation relie chaque package à npm, et il y a un bouton npm sur la page d'accueil ainsi qu'une icône npm dans la navigation supérieure.
v1.2.0
La version de compatibilité directe (drop-in) : les packages scopés @michi-vz/* peuvent remplacer l'ancien package unique michi-vz sans aucune régression de graphique. Tout est rétrocompatible.
- Contexte agnostique du moteur de rendu.
legendData(le contrat de couleur par série pour les consommateurs en canvas / mode skip) sur les contextes Line/Gap/Area/Scatter/BarBell/Radar ;renderedData/visibleItems; chaqueon*Processedest désormais idempotent, donc il ne se déclenche que lorsque le contexte change réellement et ne boucle jamais. - LineChart. États de chargement / absence de données, configuration des axes (
yTicks, lignes de grille, mise en évidence de la ligne zéro),fontFamily, etsvgChildrenfournis par le consommateur. - Davantage de props de graphiques. Légende de forme pour Gap ;
maxBarHeight/symmetricXDomainpour Comparable ; rotation des libellés +keyspour VerticalStackBar ; échelle en bandes, réticule et formes par point pour Scatter ; forme de données héritée + tests de collision tolérants pour Radar. - Axes, SEO et a11y. Rotation automatique adaptative et réduction des graduations sur les axes surchargés ; le
<svg>du graphique porte désormais<title>,<desc>et des<metadata>JSON-LD schema.org. - Rendu WebGPU expérimental aux côtés du SVG et du canvas.
v1.1.1
- Correction Bar-Bell. Les cercles d'extrémité se dessinent désormais par-dessus les segments de barre (auparavant, un segment ultérieur pouvait peindre par-dessus l'extrémité du segment précédent), et tout le segment est survolable pour les infobulles, pas seulement le cercle d'extrémité.
