Bibliothèque / SDK
reflex-dev/xy avatar
reflex-dev/xy

xy : ce que le README permet réellement de vérifier

Aperçu du projet : Graphiques Python ultra-rapides et personnalisables. Personnalisez chaque couche Utilisez Python pour contrôler le graphique, des marques et axes aux interactions et à la mise en page.

1 841 étoiles74 forksPythonApache-2.0

En bref

De quoi s’agit-il ?
Analyse française de reflex-dev/xy, de son périmètre déclaré, de ses entrées et de ses limites documentées.
À qui s’adresse-t-il ?
Les chiffres de performance sont ceux publiés par le projet: 0,071 seconde à 10 000 points et 0,081 seconde à 100 millions dans leur protocole. Ils ne constituent pas une promesse pour votre navigateur ou vos données.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 13 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Ce qu'est XY et où il fonctionne

XY est une bibliothèque de graphiques Python pour le Web, les notebooks et les exports statiques. Les graphiques peuvent être composés de manière déclarative ou selon les conventions de matplotlib, et le README indique que la personnalisation peut se faire avec Python, CSS ou Tailwind. Le projet est en phase alpha et reçoit des améliorations fréquentes. Le README rapporte également le rendu de l'ensemble du jeu de données OpenStreetMap, qu'il chiffre à 10 milliards de points, comme démonstration d'échelle.

Installation et premier graphique

Le README propose deux méthodes d'installation : `pip install xy` et `uv add xy`. Un graphique en courbes de base est créé avec `xy.line_chart(xy.line([1,2,3,4,5], [120,180,165,240,310]))`, et l'objet graphique peut être exporté en HTML, PNG ou SVG via des méthodes comme `to_html`, `to_png` ou `to_svg`, ou affiché directement dans un notebook. Le README note que toute séquence fonctionne et que NumPy est optionnel. La même API évolue jusqu'à cent millions de points lorsqu'elle est rendue comme surface de densité, comme le montre un exemple ultérieur avec un jeu de données en spirale.

Couches de personnalisation

Le README décrit quatre domaines de personnalisation : les marques (couleur, taille, opacité, symboles, dégradés, traits, courbes, cartes de couleurs), les guides (axes, graduations, grilles, annotations, légendes, barres de couleurs, infobulles), l'interaction (pan, zoom, survol, sélections, réticule, rappels, graphiques liés) et la mise en page (couches, facettes, dimensions réactives, thèmes). Il montre également un extrait de code qui passe `class_name` et `class_names` pour appliquer des classes CSS ou Tailwind, par exemple `class_name="rounded-xl bg-white"` et `class_names={"tooltip": "rounded-lg bg-zinc-900 text-white"}`. Le README renvoie à un guide de style et à une matrice de capacités pour une ventilation détaillée.

Méthodologie de benchmark et résultats rapportés

La section benchmark du README décrit une méthodologie : des graphiques interactifs en direct de 10 000 à 100 millions de points, où chaque bibliothèque reçoit chaque ligne et est pilotée via son propre chemin d'entrée dans un vrai navigateur. L'horloge ne s'arrête que lorsque le canvas est correct (des points sentinelles plantés sont vérifiés allumés) et stable, c'est-à-dire 10 images identiques en octets. Les résultats rapportés montrent XY à 0,071 seconde pour 10 000 points et 0,081 seconde pour 100 millions, ce que le README attribue au passage à une surface de densité limitée à l'écran au-dessus de 200 000 lignes. Avec `density=False`, le même moteur rend 100 millions de marqueurs exacts en 1,34 seconde en utilisant 5,26 Gio de mémoire. Des tableaux comparent XY à Matplotlib et Plotly pour le temps de rendu et la mémoire côté Python, avec des notes indiquant que Plotly ne termine jamais à 50 millions et que Matplotlib ne résout pas le zoom à 100 millions. Le README précise qu'il s'agit de lancements uniques sur une machine, un Apple M5 Pro, et renvoie à un runbook pour la méthodologie et les résultats bruts.

xy: protocole de vérification

XY se teste avec pip install xy ou uv add xy, puis avec xy.line_chart et chart.to_html("chart.html"), chart.to_png("chart.png") ou chart.to_svg("chart.svg"). Le README décrit un cœur Rust qui calcule une surface adaptée à la résolution pour les grands volumes, tout en conservant les lignes originales lors d’une sélection. Il précise aussi que le logiciel est en alpha.

Décision pour xy

Les chiffres de performance sont ceux publiés par le projet: 0,071 seconde à 10 000 points et 0,081 seconde à 100 millions dans leur protocole. Ils ne constituent pas une promesse pour votre navigateur ou vos données. Avant adoption, comparez density=True et density=False, vérifiez le zoom et contrôlez les formats d’export attendus.

Le statut alpha de reflex-dev/xy modifie la décision. Les API xy.line_chart, xy.line, xy.scatter_chart et xy.scatter sont bien montrées, comme les exports chart.to_html, chart.to_png et chart.to_svg. Le README explique que les petits graphiques envoient chaque point au navigateur, alors que le cœur Rust calcule une représentation limitée à la résolution pour les grands volumes. La sélection doit pouvoir retourner les lignes originales et le zoom recalculer la plage visible. Ce contrat mérite un test avec des points sentinelles, des valeurs manquantes et un export SVG. Les comparaisons publiées avec Matplotlib WebAgg et Plotly scattergl décrivent un protocole propre au dépôt; elles ne permettent pas de déduire une consommation identique sur une machine différente. L’import xy.pyplot vise les utilisateurs de conventions matplotlib, mais le guide de compatibilité prévient que toutes les fonctions ne sont pas prises en charge. Apache-2.0 encadre le code distribué, pas les données que vous affichez.

Conclusion éditoriale

Les chiffres de performance sont ceux publiés par le projet: 0,071 seconde à 10 000 points et 0,081 seconde à 100 millions dans leur protocole. Ils ne constituent pas une promesse pour votre navigateur ou vos données. Avant adoption, comparez density=True et density=False, vérifiez le zoom et contrôlez les formats d’export attendus. Pour décider, utilisez le projet dans ce périmètre précis et consignez le résultat observé dans votre environnement.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté