MatPlotLibNet

officiel

Donnez-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_chart et obtenez un PNG ainsi qu’un résumé textuel de ce qui a été dessiné.
  • Enregistrer des graphiques dans des fichiers — Utilisez save_chart pour 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_types pour 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_schema lorsqu’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.

CI NuGet NuGet Downloads License: MIT GitHub stars

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


Packages

PackageInstallationCe qu'il fait
MatPlotLibNetdotnet add package MatPlotLibNetNoyau : modèles, API fluide, rendu SVG, JSON, transformations
MatPlotLibNet.DataFramedotnet add package MatPlotLibNet.DataFrameMéthodes d'extension Microsoft.Data.Analysis.DataFrame — tracés, indicateurs (SMA/EMA/RSI/MACD/…) et régression polynomiale à partir de colonnes nommées
MatPlotLibNet.Skiadotnet add package MatPlotLibNet.SkiaExport PNG, PDF et GIF animé via SkiaSharp
MatPlotLibNet.Blazordotnet add package MatPlotLibNet.BlazorComposants Razor MplChart + MplLiveChart avec SignalR
MatPlotLibNet.AspNetCoredotnet add package MatPlotLibNet.AspNetCorePoints de terminaison REST, hub SignalR, IChartPublisher
MatPlotLibNet.Interactivedotnet add package MatPlotLibNet.Interactivefigure.ShowAsync() — fenêtre popup navigateur, aucun serveur requis
MatPlotLibNet.GraphQLdotnet add package MatPlotLibNet.GraphQLRequêtes GraphQL + abonnements via HotChocolate
MatPlotLibNet.Mauidotnet add package MatPlotLibNet.MauiMplChartView natif via Microsoft.Maui.Graphics
MatPlotLibNet.Avaloniadotnet add package MatPlotLibNet.AvaloniaMplChartControl natif pour Avalonia 12 — backend Skia, interaction locale optionnelle
MatPlotLibNet.Unodotnet add package MatPlotLibNet.UnoMplChartElement natif pour Uno Platform (WinUI 3 / Android / iOS / macCatalyst)
MatPlotLibNet.Wpfdotnet add package MatPlotLibNet.WpfMplChartControl WPF natif via SkiaSharp — les 9 modificateurs d'interaction
MatPlotLibNet.Geodotnet add package MatPlotLibNet.Geo13 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.Mcpdnx MatPlotLibNet.McpServeur MCP — un agent IA rend des graphiques via stdio (cookbook)
@matplotlibnet/angularnpm install @matplotlibnet/angularComposants Angular + client SignalR TypeScript
@matplotlibnet/reactnpm install @matplotlibnet/reactHooks React + composants + client SignalR TypeScript
@matplotlibnet/vuenpm install @matplotlibnet/vueComposables 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 IAMatPlotLibNet.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ôlePlt.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 natifsMplChartControl 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éelStreamingLineSeries, 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.