MatPlotLibNet

offiziell

Übergib ihm das JSON für ein Diagramm und es rendert ein PNG, das das Modell tatsächlich ansehen kann — 83 Diagrammtypen, SVG und PDF werden in Dateien geschrieben, läuft lokal als .NET-Tool.

Was kann man mit MatPlotLibNet MCP machen?

  • Diagramme aus JSON-Spezifikationen rendern – Fordern Sie ein Diagramm über render_chart an und erhalten Sie ein PNG sowie eine Textzusammenfassung des Gezeichneten.
  • Diagramme in Dateien speichern – Verwenden Sie save_chart, um ein Diagramm als PNG, SVG oder PDF zu exportieren, und erhalten Sie den geschriebenen Dateipfad.
  • Diagrammfunktionen entdecken – Fragen Sie list_chart_types ab, um alle 83 unterstützten Serientypen zu sehen, von Liniendiagrammen bis zu 3D-Oberflächen.
  • Diagrammschemata validieren – Erhalten Sie feldbezogenes Fehlerfeedback von describe_chart_schema, wenn eine Diagrammspezifikation fehlerhaft ist.

Dokumentation

MatPlotLibNet

Eine .NET 10 / .NET 8-Diagrammbibliothek, inspiriert von matplotlib: fließende API, DI-freundlich, serverseitiger SVG-/PNG-/PDF-/animierter-GIF-Export, ein MCP-Server, damit ein KI-Agent damit zeichnen kann, und 83 Serientypen. Enthält 13 Kartenprojektionen und eingebettete Natural-Earth-Daten, 30 Themes, LaTeX-artiges MathText, O(1)-Streaming mit 53 technischen Indikatoren, ein Kontrollraum (Plt.OpsDashboard() — KPI-Kacheln, Zustandszeitlinien, ein gemeinsames Trendfenster) und native Steuerelemente für Blazor, WPF, MAUI, Avalonia, Uno und ASP.NET Core, sowie TypeScript-Clients für Angular, React und Vue. Kein JavaScript-Framework, kein WebView, kein SaaS.

CI NuGet NuGet Downloads License: MIT GitHub stars

Wohin das führt

Die 1.15-Linie öffnet die Bibliothek für Agenten: MatPlotLibNet.Mcp ist ein Model-Context-Protocol-Server, sodass ein Modell jeden dieser Diagrammtypen aus einer JSON-Spezifikation rendern und das Ergebnis ansehen kann — und erfährt, welches Feld falsch ist, wenn die Spezifikation keine ist.

Die 1.14-Linie davor war Kontrollraum-Arbeit: Plt.OpsDashboard() und die Kachel-Anatomie kamen damit, und die Releases seitdem sind die Korrekturen und Erweiterungen, die eine Live-Operator-Wand verlangte — eine sekundäre Y-Achse, die ein vollwertiger Bürger ist, Streaming, das in SVG zeichnet, 3-D-Achsentitel, die ihre eigenen Beschriftungen löschen, Kachelbeschriftungen, die umbrechen und innerhalb ihrer Kachel bleiben, und ein Ops-Fenster, dessen Ticks als Zeit lesbar sind.

Danach ist der Rhythmus gemeinschaftsgetrieben: Fehlerkorrekturen, Dokumentation und was auch immer echte Nutzung hervorbringt. Eröffnen Sie eine Discussion oder ein Issue — das steuert das nächste Release. Jedes Release, mit seinen Migrationshinweisen, steht im CHANGELOG.

Qualitätsmaßstab: eine strenge Pro-Klasse-Abdeckungsschwelle bei ≥90 % Zeilen und Zweigen (679 Klassen, 99,6 % / 97,3 %) über 11.022 Tests, wobei das Rendern gegen matplotlib-Pixeltreue-Fixtures verifiziert wird.


Dokumentation


Pakete

PaketInstallationWas es tut
MatPlotLibNetdotnet add package MatPlotLibNetKern: Modelle, fließende API, SVG-Rendering, JSON, Transformationen
MatPlotLibNet.DataFramedotnet add package MatPlotLibNet.DataFrameMicrosoft.Data.Analysis.DataFrame-Erweiterungsmethoden — Plotten, Indikatoren (SMA/EMA/RSI/MACD/…) und polynomiale Regression aus benannten Spalten
MatPlotLibNet.Skiadotnet add package MatPlotLibNet.SkiaPNG-, PDF- und animierter-GIF-Export über SkiaSharp
MatPlotLibNet.Blazordotnet add package MatPlotLibNet.BlazorMplChart + MplLiveChart-Razor-Komponenten mit SignalR
MatPlotLibNet.AspNetCoredotnet add package MatPlotLibNet.AspNetCoreREST-Endpunkte, SignalR-Hub, IChartPublisher
MatPlotLibNet.Interactivedotnet add package MatPlotLibNet.Interactivefigure.ShowAsync() — Browser-Popup, kein Server nötig
MatPlotLibNet.GraphQLdotnet add package MatPlotLibNet.GraphQLGraphQL-Abfragen + Abonnements über HotChocolate
MatPlotLibNet.Mauidotnet add package MatPlotLibNet.MauiNatives MplChartView über Microsoft.Maui.Graphics
MatPlotLibNet.Avaloniadotnet add package MatPlotLibNet.AvaloniaNatives MplChartControl für Avalonia 12 — Skia-Backend, optionale lokale Interaktion
MatPlotLibNet.Unodotnet add package MatPlotLibNet.UnoNatives MplChartElement für Uno Platform (WinUI 3 / Android / iOS / macCatalyst)
MatPlotLibNet.Wpfdotnet add package MatPlotLibNet.WpfNatives WPF-MplChartControl über SkiaSharp — alle 9 Interaktionsmodifikatoren
MatPlotLibNet.Geodotnet add package MatPlotLibNet.Geo13 Kartenprojektionen, GeoJSON-Parser, Natural-Earth-110m-Daten, geografische Polygone
MatPlotLibNet.Notebooks#r "nuget: MatPlotLibNet.Notebooks"Inline-SVG in Polyglot-/Jupyter-Notebooks
MatPlotLibNet.Mcpdnx MatPlotLibNet.McpMCP-Server — ein KI-Agent rendert Diagramme über stdio (Cookbook)
@matplotlibnet/angularnpm install @matplotlibnet/angularAngular-Komponenten + TypeScript-SignalR-Client
@matplotlibnet/reactnpm install @matplotlibnet/reactReact-Hooks + Komponenten + TypeScript-SignalR-Client
@matplotlibnet/vuenpm install @matplotlibnet/vueVue-3-Composables + TypeScript-SignalR-Client

Schnellstart

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");

Funktionen

83 Serientypen — Linie, Streuung, Balken, Histogramm, Kreis, Box, Violine, Heatmap, Kontur, Candlestick, OHLC, Treemap, Sunburst, Sankey, Polar, Polar-Heatmap, 3D-Oberfläche, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, Radar, Wasserfall, Trichter, Messgerät, Statistik-Kachel (Einzelwert-KPI), Zustandszeitlinie (diskrete Zustandssegmente über Zeit), Paar-Gitter, relative Rotationsgrafik, Streaming-Linie/Streuung/Signal/Candlestick und mehr.

MCP-Server — Diagramme für einen KI-AgentenMatPlotLibNet.Mcp ist ein Model Context Protocol-Server, der als .NET-Tool ausgeliefert wird, das ein Host über stdio startet. Vier Werkzeuge: render_chart (PNG plus eine Textzusammenfassung von dem, was gezeichnet wurde), save_chart (PNG/SVG/PDF in eine Datei, die den geschriebenen Pfad zurückgibt), list_chart_types und describe_chart_schema. Die Spezifikation ist das eigene Figure-JSON der Bibliothek, sodass alles, was die Bibliothek zeichnet, ein Agent anfordern kann — und der Server lehnt eine falsche Spezifikation nach Feldnamen ab, bevor er rendert, statt ein leeres Bild zurückzugeben. Siehe das Cookbook.

{ "servers": { "MatPlotLibNet.Mcp": { "type": "stdio", "command": "dnx", "args": ["MatPlotLibNet.Mcp", "--yes"] } } }

KontrollraumPlt.OpsDashboard() setzt einen Operator-Bildschirm zusammen: KPI-Kacheln oben, Zustandszeitlinien darunter und ein gemeinsames Trendpanel, alles an ein vom Aufrufer geliefertes Zeitfenster gebunden (die Bibliothek liest nie die Wanduhr). Die Kachel trägt ein Target, eine umbrechende mehrzeilige Caption, ein Inline-Sparkline und ein Hatch, das keine Information bedeutet; Theme.Alarm benennt die reservierten Alarmfarben und vier Operator-Hintergründe werden mitgeliefert. BulletGraphSeries ersetzt das radiale Messgerät.

Native UI-SteuerelementeMplChartControl für Avalonia 12 und MplChartElement für Uno Platform rendern Diagramme nativ über SkiaSharp — kein Browser, kein WebView, kein SignalR nötig. 9 Interaktionsmodifikatoren: Schwenken (Ziehen), Zoomen (Scrollen), 3D-Rotation (Rechtsziehen), Rechteck-Zoom (Strg+Ziehen), Pinsel-Auswahl (Umschalt+Ziehen), Spannen-Auswahl (Alt+Ziehen), Legenden-Umschalten (Klicken), Fadenkreuz (passiv), Hover-Tooltip. Symbolleisten-Zustandsmodell, Verlauf (Zurück/Vor), Daten-Cursor (Klicken-zum-Anheften), Tick-Spiegelung, enge Ränder.

MathText — LaTeX-artige Inline-Mathematik in jedem Label oder Titel: $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$. 96 Symbolzuordnungen (Griechisch, mathematische Operatoren, Pfeile, Relationen, Mengen/Logik, Tafel-Fett), Brüche, Quadratwurzeln, Akzente, Schriftvarianten, Abstände und skalierende Begrenzer.

3-D-Diagramme — 12 Serientypen: Oberfläche, Scatter3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D (Delaunay), Contour3D (Marching Squares), Quiver3D (Vektorfeld), Voxels (face-culled Würfel), Text3D (Annotationen). Vollständige Projection3D-Pipeline, DepthQueue3D-Maleralgorithmus, Vec3.FaceNormal + Color.Shade()/Color.Modulate()-erweiterungsbasierte Schattierung, Svg3DRotationScript-clientseitige Rotation mit Tiefen-Neusortierung, kamerabgeleitete Rückseiten (CubeFaceSelection — die Paneele, Würfelkanten, Wandgitter und Tick-Reihen folgen der Kamera in jedem Azimut, serverseitig und während eines Ziehens), konfigurierbares Pane3DConfig (Boden-/Wandfarben) und 3D-Colorbar-Unterstützung.

Streaming & EchtzeitStreamingLineSeries, StreamingScatterSeries, StreamingSignalSeries, StreamingCandlestickSeries unterstützt durch DoubleRingBuffer mit AppendPoint(x, y). StreamingFigure bietet gedrosseltes Neu-Rendering und automatisch skalierende Achsen (SlidingWindow, StickyRight, AutoScale). 11 Streaming-Indikatoren (SMA, EMA, RSI, Bollinger, MACD, OBV, ATR, Stochastic, WilliamsR, CCI, VWAP) hängen sich automatisch an Candlestick-Daten. Streaming-Steuerelemente für Avalonia, Uno, MAUI, Blazor und ASP.NET Core. SVG-Diff-Engine für Bandbreitenoptimierung. Rx-IObservable<T>-Adapter.

Geografische ProjektionenMatPlotLibNet.Geo-Paket mit 5 Kartenprojektionen (PlateCarree, Mercator, Robinson, Orthographic, LambertConformal), GeoJSON-Parser, eingebettete Natural-Earth-110m-Daten und GeoPolygonSeries für Küstenlinien/Grenzen/Choroplethen. Symlog-Achsenskala für Daten, die positive und negative Bereiche umfassen.

Bidirektionales SignalR — serverautoritative interaktive Diagramme mit Mutationsereignissen (Zoomen, Schwenken, Zurücksetzen, Legenden-Umschalten) und Benachrichtigungsereignissen (Pinsel-Auswahl, Hover). Gestapelte Ereignishierarchie, natürliches Zusammenführen, Pro-Aufrufer-Hover-Antworten.

142 Colormaps — viridis, plasma, turbo, coolwarm und 138 weitere (71 Basismaps, jede mit einer automatisch registrierten umgekehrten _r-Variante). NumPy-artige SIMD-Numerik (Vec, Mat, Linalg, Fft). Barrierefreiheit (ARIA, Tastatur, Okabe-Ito-Palette, Hochkontrast-Theme). Matplotlib-ähnliche Themes. DataFrame-Integration mit 53 technischen Indikatoren. Gebrochene Achsen. Publikationsqualität-SVG/PNG/PDF/GIF-Export.


Lizenz

MIT — frei für jede Nutzung, Open-Source oder kommerziell, ohne Copyleft-Bedingungen.