MatPlotLibNet
officielDonnez-lui le JSON d'un graphique et il génère un PNG que le modèle peut réellement consulter — 83 types de graphiques, SVG et PDF écrits dans un fichier, fonctionnant localement comme un outil .NET.
Que pouvez-vous faire avec MatPlotLibNet MCP ?
- Générer des graphiques à partir de spécifications JSON — Demandez un graphique via
render_chartet obtenez un PNG ainsi qu’un résumé textuel de ce qui a été dessiné. - Enregistrer des graphiques dans des fichiers — Utilisez
save_chartpour exporter un graphique en PNG, SVG ou PDF et recevez le chemin du fichier écrit. - Découvrir les capacités des graphiques — Interrogez
list_chart_typespour voir les 83 types de séries pris en charge, des tracés linéaires aux surfaces 3D. - Valider les schémas de graphiques — Obtenez des retours d’erreur au niveau des champs via
describe_chart_schemalorsqu’une spécification de graphique est mal formée.
Documentation
MatPlotLibNet
Une bibliothèque de graphiques .NET 10 / .NET 8 inspirée par matplotlib : API fluide, compatible DI,
export SVG / PNG / PDF / GIF animé côté serveur, un serveur MCP pour qu'un agent IA puisse dessiner avec, et 83 types de séries. Livrée avec 13 projections cartographiques et des données Natural Earth intégrées, 30 thèmes, MathText de style LaTeX, streaming O(1) avec 53 indicateurs techniques, une salle de contrôle
(Plt.OpsDashboard() — tuiles KPI, chronologies d'état, une fenêtre de tendance partagée), et des contrôles natifs pour Blazor, WPF,
MAUI, Avalonia, Uno et ASP.NET Core, plus des clients TypeScript pour Angular, React et Vue. Aucun framework JavaScript,
aucune WebView, aucun SaaS.
Où cela mène
La ligne 1.15 ouvre la bibliothèque aux agents : MatPlotLibNet.Mcp est un serveur Model Context Protocol, donc un
modèle peut rendre n'importe lequel de ces types de graphiques à partir d'une spécification JSON et examiner le résultat — et il est informé du champ
qui est incorrect lorsque la spécification n'en est pas une.
La ligne 1.14 qui la précédait était un travail sur la salle de contrôle : Plt.OpsDashboard() et l'anatomie des tuiles sont arrivés avec elle,
et les versions suivantes sont les corrections et extensions demandées par un mur d'opérateur en direct — un axe Y secondaire qui est
un citoyen à part entière, un streaming qui dessine en SVG, des titres d'axes 3D qui effacent leurs propres étiquettes, des légendes de tuiles qui
se replient et restent dans leur tuile, et une fenêtre d'exploitation dont les graduations se lisent comme du temps.
Ensuite, le rythme est piloté par la communauté : corrections de bugs, documentation, et tout ce que l'usage réel fait apparaître. Ouvrez une Discussion ou un Issue — c'est ce qui oriente la prochaine version. Chaque version, avec ses notes de migration, se trouve dans le CHANGELOG.
Barre de qualité : une exigence stricte de couverture par classe à ≥90 % de lignes et de branches (679 classes, 99,6 % / 97,3 %) sur 11 022 tests, avec un rendu vérifié par rapport aux fixtures de fidélité pixel de matplotlib.
Documentation
- Wiki — prise en main, aide-mémoire, les 83 types de graphiques, la salle de contrôle, le style, le streaming, SignalR, les packages
- Cookbook — exemples copier-coller avec sortie rendue
- Playground — essayez les graphiques en direct dans le navigateur
- Référence API — générée à partir de la documentation XML
- Benchmarks · Politique de couverture · CHANGELOG
Packages
| Package | Installation | Ce qu'il fait |
|---|---|---|
| MatPlotLibNet | dotnet add package MatPlotLibNet | Noyau : modèles, API fluide, rendu SVG, JSON, transformations |
| MatPlotLibNet.DataFrame | dotnet add package MatPlotLibNet.DataFrame | Méthodes d'extension Microsoft.Data.Analysis.DataFrame — tracés, indicateurs (SMA/EMA/RSI/MACD/…) et régression polynomiale à partir de colonnes nommées |
| MatPlotLibNet.Skia | dotnet add package MatPlotLibNet.Skia | Export PNG, PDF et GIF animé via SkiaSharp |
| MatPlotLibNet.Blazor | dotnet add package MatPlotLibNet.Blazor | Composants Razor MplChart + MplLiveChart avec SignalR |
| MatPlotLibNet.AspNetCore | dotnet add package MatPlotLibNet.AspNetCore | Points de terminaison REST, hub SignalR, IChartPublisher |
| MatPlotLibNet.Interactive | dotnet add package MatPlotLibNet.Interactive | figure.ShowAsync() — fenêtre popup navigateur, aucun serveur requis |
| MatPlotLibNet.GraphQL | dotnet add package MatPlotLibNet.GraphQL | Requêtes GraphQL + abonnements via HotChocolate |
| MatPlotLibNet.Maui | dotnet add package MatPlotLibNet.Maui | MplChartView natif via Microsoft.Maui.Graphics |
| MatPlotLibNet.Avalonia | dotnet add package MatPlotLibNet.Avalonia | MplChartControl natif pour Avalonia 12 — backend Skia, interaction locale optionnelle |
| MatPlotLibNet.Uno | dotnet add package MatPlotLibNet.Uno | MplChartElement natif pour Uno Platform (WinUI 3 / Android / iOS / macCatalyst) |
| MatPlotLibNet.Wpf | dotnet add package MatPlotLibNet.Wpf | MplChartControl WPF natif via SkiaSharp — les 9 modificateurs d'interaction |
| MatPlotLibNet.Geo | dotnet add package MatPlotLibNet.Geo | 13 projections cartographiques, analyseur GeoJSON, données Natural Earth 110m, polygones géographiques |
| MatPlotLibNet.Notebooks | #r "nuget: MatPlotLibNet.Notebooks" | SVG intégré dans les notebooks Polyglot / Jupyter |
| MatPlotLibNet.Mcp | dnx MatPlotLibNet.Mcp | Serveur MCP — un agent IA rend des graphiques via stdio (cookbook) |
| @matplotlibnet/angular | npm install @matplotlibnet/angular | Composants Angular + client SignalR TypeScript |
| @matplotlibnet/react | npm install @matplotlibnet/react | Hooks React + composants + client SignalR TypeScript |
| @matplotlibnet/vue | npm install @matplotlibnet/vue | Composables Vue 3 + client SignalR TypeScript |
Démarrage rapide
using MatPlotLibNet;
using MatPlotLibNet.Styling;
double[] x = [1, 2, 3, 4, 5];
double[] y = [2, 4, 3, 5, 1];
Plt.Create()
.WithTitle("My First Chart")
.WithTheme(Theme.Dark)
.Plot(x, y, s => { s.Color = Color.Blue; s.Label = "Data"; })
.WithLegend()
.Save("chart.svg");
Fonctionnalités
83 types de séries — ligne, nuage de points, barres, histogramme, camembert, boîte à moustaches, violon, carte de chaleur, contour, chandelier, OHLC, treemap, sunburst, Sankey, polaire, carte de chaleur polaire, surface 3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, radar, cascade, entonnoir, jauge, tuile statistique (KPI à valeur unique), chronologie d'état (segments d'état discrets dans le temps), grille de paires, graphe de rotation relative, ligne de streaming/nuage de points/signal/chandelier, et plus encore.
Serveur MCP — graphiques pour un agent IA — MatPlotLibNet.Mcp est un
serveur Model Context Protocol, fourni comme outil .NET qu'un hôte démarre via stdio. Quatre outils : render_chart (PNG plus un résumé textuel de
ce qui a été dessiné), save_chart (PNG/SVG/PDF vers un fichier, renvoyant le chemin écrit), list_chart_types et
describe_chart_schema. La spécification est le propre JSON de figure de la bibliothèque, donc tout ce que la bibliothèque dessine, un agent peut
le demander — et le serveur refuse une spécification incorrecte par nom de champ avant de rendre, au lieu de renvoyer une image
vide. Voir le cookbook.
{ "servers": { "MatPlotLibNet.Mcp": { "type": "stdio", "command": "dnx", "args": ["MatPlotLibNet.Mcp", "--yes"] } } }
Salle de contrôle — Plt.OpsDashboard() compose un écran d'opérateur : tuiles KPI en haut, chronologies d'état en dessous, et un panneau de tendance partagé, tous épinglés à une fenêtre temporelle fournie par l'appelant (la bibliothèque ne lit jamais l'horloge système). La tuile porte un Target, un Caption multiligne qui se replie, un sparkline intégré et un Hatch qui signifie aucune information ; Theme.Alarm nomme les couleurs d'alarme réservées et quatre arrière-plans d'opérateur sont fournis. BulletGraphSeries remplace la jauge radiale.
Contrôles d'interface natifs — MplChartControl pour Avalonia 12 et MplChartElement pour Uno Platform rendent les graphiques nativement via SkiaSharp — aucun navigateur, aucune WebView, aucun SignalR requis. 9 modificateurs d'interaction : panoramique (glisser), zoom (molette), rotation 3D (glisser-droit), zoom rectangle (Ctrl+glisser), sélection au pinceau (Maj+glisser), sélection de plage (Alt+glisser), bascule de légende (clic), réticule (passif), infobulle au survol. Modèle d'état de barre d'outils, historique de vue (précédent/suivant), curseur de données (clic pour épingler), miroir de graduations, marges serrées.
MathText — mathématiques intégrées de style LaTeX dans toute étiquette ou titre : $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$. 96 correspondances de symboles (grec, opérateurs mathématiques, flèches, relations, ensembles/logique, gras tableau noir), fractions, racines carrées, accents, variantes de police, espacement et délimiteurs à mise à l'échelle.
Graphiques 3-D — 12 types de séries : Surface, Scatter3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D (Delaunay), Contour3D (marche des carrés), Quiver3D (champ vectoriel), Voxels (cubes à faces supprimées), Text3D (annotations). Pipeline Projection3D complet, algorithme du peintre DepthQueue3D, ombrage basé sur extensions Vec3.FaceNormal + Color.Shade()/Color.Modulate(), rotation côté client Svg3DRotationScript avec re-tri en profondeur, faces arrière dérivées de la caméra (CubeFaceSelection — les panneaux, arêtes de cube, grilles murales et rangées de graduations suivent la caméra à tout azimut, côté serveur et pendant un glisser), Pane3DConfig configurable (couleurs sol/mur), et support de barre de couleur 3D.
Streaming et temps réel — StreamingLineSeries, StreamingScatterSeries, StreamingSignalSeries, StreamingCandlestickSeries soutenus par DoubleRingBuffer avec AppendPoint(x, y). StreamingFigure fournit un re-rendu limité et des axes à mise à l'échelle automatique (SlidingWindow, StickyRight, AutoScale). 11 indicateurs de streaming (SMA, EMA, RSI, Bollinger, MACD, OBV, ATR, Stochastic, WilliamsR, CCI, VWAP) se rattachent automatiquement aux données de chandelier. Contrôles de streaming pour Avalonia, Uno, MAUI, Blazor et ASP.NET Core. Moteur de diff SVG pour l'optimisation de la bande passante. Adaptateur Rx IObservable<T>.
Projections géographiques — package MatPlotLibNet.Geo avec 5 projections cartographiques (PlateCarree, Mercator, Robinson, Orthographic, LambertConformal), analyseur GeoJSON, données Natural Earth 110m intégrées, et GeoPolygonSeries pour les littoraux/frontières/choroplèthes. Échelle d'axe symlog pour les données couvrant des plages positives et négatives.
SignalR bidirectionnel — graphiques interactifs autoritaires côté serveur avec événements de mutation (zoom, panoramique, réinitialisation, bascule de légende) et événements de notification (sélection au pinceau, survol). Hiérarchie d'événements à enregistrements empilés, coalescence naturelle, réponses de survol par appelant.
142 cartes de couleurs — viridis, plasma, turbo, coolwarm, et 138 autres (71 cartes de base, chacune avec une variante inversée _r auto-enregistrée). Numériques SIMD de style NumPy (Vec, Mat, Linalg, Fft). Accessibilité (ARIA, clavier, palette Okabe-Ito, thème à contraste élevé). Thèmes imitant matplotlib. Intégration DataFrame avec 53 indicateurs techniques. Axes brisés. Export SVG/PNG/PDF/GIF de qualité publication.
Licence
MIT — gratuit pour toute utilisation, open-source ou commerciale, sans conditions de copyleft.