- Flint est un langage de visualisation qui détermine automatiquement le parsing, les axes, le formatage et les couleurs à partir de la signification des champs de données, afin de créer et modifier des graphiques sans configuration de bas niveau
- Il déduit les détails nécessaires à l’encodage visuel à partir de types sémantiques comme
Rank,YearMonth,DeltaouTemperature - Grâce à un modèle de mise en page élastique et aux principes de banking, il ajuste tailles, espacements et placements ; lorsque le graphique s’étend, il agrandit le canevas et réduit la largeur des bandes pour gérer les compositions denses
- Il prend en charge 50 types de graphiques dans Vega-Lite, ECharts, Chart.js et Plotly, et génère aussi des graphiques Excel natifs modifiables via Office.js
- Depuis une interface unique, il permet de changer de backend et de tirer parti des points forts de chaque outil, comme les sunbursts hiérarchiques d’ECharts, les traces statistiques et analytiques de Plotly, ou l’édition dans un classeur Excel
Spécifications fondées sur la sémantique et optimisation automatique
- Flint déduit le parsing, les échelles, les axes, le formatage et les palettes de couleurs à partir de types sémantiques qui décrivent le sens des champs de données, comme
Rank,YearMonth,DeltaouTemperature- Dans une heatmap montrant l’évolution nette des nouveaux utilisateurs par jeu et par mois,
gameest défini commeCategory,periodcommeYearMonthetnewUserscommeProfit - En fonction de cette sémantique, il détermine automatiquement le parseur de valeurs temporelles, le format des axes, la palette de couleurs divergente et le point médian
- Dans une heatmap montrant l’évolution nette des nouveaux utilisateurs par jeu et par mois,
- L’optimisation automatique de la mise en page applique un modèle de mise en page élastique et les principes de banking pour gérer dynamiquement tailles, espacements et placements en fonction du canevas
- Lorsqu’un graphique à barres groupées passe d’une configuration clairsemée
5 × 3à une configuration dense22 × 3, il agrandit le canevas et réduit la largeur des bandes - Le fonctionnement est comparable à celui de ressorts qui trouvent leur place dans un conteneur extensible
- Lorsqu’un graphique à barres groupées passe d’une configuration clairsemée
- Il est possible de modifier le design simplement en changeant de type de graphique et en reconnectant l’encodage visuel, sans manipuler directement des paramètres de bas niveau fragiles
- Un graphique à barres facetté représentant la répartition de la population par sexe et par âge dans le recensement américain de 2000 peut être converti en pyramide des âges en changeant uniquement le type de graphique, le compilateur prenant en charge le reste des réglages de bas niveau
Backends pris en charge et versions récentes
- Flint prend en charge 50 types de graphiques sur Vega-Lite, ECharts, Chart.js et Plotly, et la galerie contient 121 exemples par backend
- L’interface unifiée masque les API et modèles de programmation propres à chaque backend
- ECharts peut être utilisé pour les sunbursts hiérarchiques, et Plotly pour les traces statistiques et analytiques
- Via Office.js, il produit des graphiques Excel natifs pouvant être insérés et modifiés dans un classeur
- v0.4.0, publiée le 24 juillet 2026, ajoute 38 types de graphiques Plotly et 18 modèles de graphiques Excel natifs modifiables
- v0.3.0, publiée le 19 juillet 2026, ajoute un widget de graphique dynamique permettant de changer de type de graphique et de modifier les propriétés sur place
- v0.2.2, publiée le 15 juillet 2026, ajoute le mode compact dodge et une mise en page de violin groupé
1 commentaires
Réactions sur Hacker News
Même à l’ère de l’IA, je pense que l’API de ggplot reste la meilleure API de graphiques. La « Grammar of Graphics » n’était pas qu’un slogan marketing, mais une tentative réelle de créer une grammaire capable d’exprimer tous les graphiques qualitatifs possibles
Ce travail est présenté dans https://link.springer.com/book/10.1007/0-387-28695-0. J’ai découvert ce livre en étudiant d’anciens graphiques dessinés sur papier, et les graphiques des rapports annuels de la Banque centrale d’Australie des années 1960 à 1980 avaient une vraie personnalité, alors qu’au début des années 2000 ils ont été remplacés par des graphiques Excel assez fades
Même si ggplot ne reproduit pas totalement le charme de ces anciens graphiques, il semble s’en être beaucoup inspiré dans sa manière de transmettre l’information. La section 20.1 recrée le graphique de Minard sur la campagne de Russie de Napoléon, et on peut voir un exemple similaire ici : https://www.andrewheiss.com/blog/2017/08/10/exploring-minard...
Le rendu est plus agréable que celui de pyplot et des API construites par-dessus, et pyplot semble assez limité par son rendu raster et sa gestion du texte. ggplot est moins connu des ingénieurs logiciels parce qu’il appartient à l’écosystème R, mais j’aimerais que les écosystèmes Node.js et Python s’inspirent davantage de cette API
J’ai aussi publié Algraf, un DSL créé à partir de la même philosophie : https://williamcotton.github.io/algraf/demos. Les démos incluent aussi le graphique de Minard
Il a été développé dans l’orbite de RStudio, où travaillait Hadley Wickham, le créateur de ggplot, et il est aujourd’hui soutenu par Posit, où il travaille désormais
J’ai essayé Flint ainsi que l’approche consistant à faire générer directement une spécification Vega-Lite par l’IA, et Flint n’était pas une meilleure solution
Flint est correct pour personnaliser à bas niveau des types de graphiques prédéfinis, mais lorsqu’un agent ou sous-agent produit directement une spécification Vega, on obtient des visualisations bien plus souples et de meilleure qualité, comme l’affichage des minima et maxima d’une série temporelle ou des annotations à des dates d’événements précises
Cela dit, Vega-Lite exige une validation de spécification et des consignes précises, et il faut continuellement gérer des bugs et comportements étranges. Si l’on veut démarrer vite sans construire une stack dédiée à la création de graphiques, Flint est plus stable
On dirait que l’objectif est de piloter plusieurs backends de graphiques via une seule interface, mais si une IA peut écrire du Flint, pourquoi ne pas lui faire écrire directement le code du backend ? La raison de rendre les backends interchangeables n’est pas très claire
Cela dit, s’il s’agit d’une API simple pour les LLM, cela peut avoir l’avantage d’améliorer l’efficacité en tokens
Microsoft/Flint-Chart a aussi été présenté le 2 juillet 2026 : https://github.com/microsoft/flint-chart, https://news.ycombinator.com/item?id=48756577
Le 8 juillet, il a été reposté sous le titre « Show HN: Microsoft releases Flint, a visualization language for AI agents » : https://microsoft.github.io/flint-chart/#/, https://news.ycombinator.com/item?id=48834924
Quel est le problème, au fond, avec le simple fait de dire « fais-moi un graphique XYZ avec plotly » ?
Il y a déjà eu une discussion plus importante il y a 22 jours : https://news.ycombinator.com/item?id=48834924
Un DSL pour l’IA ne semble pas très pertinent. Les modèles ont été entraînés sur des bibliothèques graphiques existantes et les manipulent déjà plutôt bien
À long terme, après avoir publié Flint, des labos pourraient créer un « benchmark graphique » pour suradapter leurs modèles à ce DSL, mais cela semble demander énormément de travail
Je ne sais pas à partir de quel niveau une abstraction devient excessive. Est-ce que Plotly ou Plotly Express ne suffisent pas déjà, et en quoi une spécification JSON de plus ouvrirait-elle une nouvelle ère ?
C’est intéressant, mais je ne sais pas si c’est vraiment nécessaire. Il existe déjà beaucoup de bibliothèques de graphiques matures, dont Apache ECharts, et au final cela ressemble à une réinvention de la roue
Un nouvel outil sort, on lui ajoute progressivement des fonctionnalités, puis un autre outil, avec une conception et une syntaxe légèrement différentes, finit par remplacer l’outil d’origine
On peut aussi exploiter les forces propres à chaque backend : ECharts pour les sunbursts hiérarchiques, Plotly pour les tracés statistiques et analytiques, Excel pour les graphiques à éditer dans un classeur. Ou alors mieux vaut choisir une bibliothèque de graphiques qu’on aime et bien en maîtriser les fonctionnalités, plutôt que de mélanger les préréglages de plusieurs bibliothèques sans vraiment peaufiner les détails