MatPlotLibNet 1.7.1
See the version list below for details.
dotnet add package MatPlotLibNet --version 1.7.1
NuGet\Install-Package MatPlotLibNet -Version 1.7.1
<PackageReference Include="MatPlotLibNet" Version="1.7.1" />
<PackageVersion Include="MatPlotLibNet" Version="1.7.1" />
<PackageReference Include="MatPlotLibNet" />
paket add MatPlotLibNet --version 1.7.1
#r "nuget: MatPlotLibNet, 1.7.1"
#:package MatPlotLibNet@1.7.1
#addin nuget:?package=MatPlotLibNet&version=1.7.1
#tool nuget:?package=MatPlotLibNet&version=1.7.1
MatPlotLibNet
A .NET 10 / .NET 8 charting library inspired by matplotlib. Fluent API, dependency injection, parallel SVG rendering, polymorphic export (SVG / PNG / PDF / GIF), and multi-platform output to Blazor, MAUI, Avalonia, Uno Platform, ASP.NET Core, Angular, React, and Vue.
v1.7.1 — Bug Fixes + Coverage Gate + Playground Polish.
- 5 silent-failure bugs fixed — geo extensions silently dropped series, broken-axis didn't compress data, symlog didn't transform data, playground grid toggle was inverted,
SymlogTransformthrew onNaN. All v1.7.0 cookbook geo/symlog/broken-y images regenerated correctly.WithBrowserInteraction()now actually exists — was documented in v1.7.0 but never implemented. Convenience that enables ZoomPan + RichTooltips + LegendToggle + Highlight + Selection in one call.- Coverage gate — ≥90% line + ≥90% branch enforced via CI per class, per-class baseline regression protection. See
docs/COVERAGE.md.- Playground SOLID refactor —
PlaygroundOptions+PlaygroundExamplesregistry. Save SVG / PNG / Code buttons, "Open in new tab", browser-interactive toggle, tight-margins toggle, all 26 themes, 15 examples (was 9).- Cookbook enriched — every page (25 of 25) gained full fluent API options sections + property tables. 13 new rendered images for previously-empty pages.
4 275 tests green across 13 NuGet packages (was 3 967 in v1.7.0).
For earlier releases, see the full CHANGELOG.
🧭 Stabilisation phase
After eleven feature releases (v1.0 → v1.7.1) MatPlotLibNet now covers the practical 90% of matplotlib's surface: 74 series types, 13 map projections with embedded Natural Earth data, 26 themes, MathText with operator limits and matrices, streaming with O(1) indicators, native UI controls for Blazor / Avalonia / Uno / WPF / MAUI, fidelity tests against a pinned matplotlib reference, and 13 NuGet packages.
v1.7.1 marks the start of a stabilisation period. The focus shifts from "ship more features" to:
- 🐛 Bug fixes only (no new public API), driven by community use and the
≥90/90coverage gate - 🧪 Test coverage uplift (the eight-phase plan in
docs/COVERAGE.md) — current baseline 85.2% line / 68.4% branch, target 94% / 90% - 📚 Documentation polish — cookbook examples, API XML doc completeness
- 🌱 Listening — what should v2 be? Open a Discussion or Issue with what's missing for your use case. The next major direction will be guided by what real users need, not by a feature checklist.
No timeline for v1.8.0 yet — when it ships, it will be community-driven.
Packages
| Package | Install | What it does |
|---|---|---|
| MatPlotLibNet | dotnet add package MatPlotLibNet |
Core: models, fluent API, SVG rendering, JSON, transforms |
| MatPlotLibNet.DataFrame | dotnet add package MatPlotLibNet.DataFrame |
Microsoft.Data.Analysis.DataFrame extension methods — plot, indicators (SMA/EMA/RSI/MACD/…), and polynomial regression from named columns |
| MatPlotLibNet.Skia | dotnet add package MatPlotLibNet.Skia |
PNG, PDF, and animated GIF export via SkiaSharp |
| MatPlotLibNet.Blazor | dotnet add package MatPlotLibNet.Blazor |
MplChart + MplLiveChart Razor components with SignalR |
| MatPlotLibNet.AspNetCore | dotnet add package MatPlotLibNet.AspNetCore |
REST endpoints, SignalR hub, IChartPublisher |
| MatPlotLibNet.Interactive | dotnet add package MatPlotLibNet.Interactive |
figure.ShowAsync() — browser popup, no server needed |
| MatPlotLibNet.GraphQL | dotnet add package MatPlotLibNet.GraphQL |
GraphQL queries + subscriptions via HotChocolate |
| MatPlotLibNet.Maui | dotnet add package MatPlotLibNet.Maui |
Native MplChartView via Microsoft.Maui.Graphics |
| MatPlotLibNet.Avalonia | dotnet add package MatPlotLibNet.Avalonia |
Native MplChartControl for Avalonia 12 — Skia backend, optional local interaction |
| MatPlotLibNet.Uno | dotnet add package MatPlotLibNet.Uno |
Native MplChartElement for Uno Platform (WinUI 3 / Android / iOS / macCatalyst) |
| MatPlotLibNet.Wpf | dotnet add package MatPlotLibNet.Wpf |
Native WPF MplChartControl via SkiaSharp — all 9 interaction modifiers |
| MatPlotLibNet.Geo | dotnet add package MatPlotLibNet.Geo |
13 map projections, GeoJSON parser, Natural Earth 110m data, geographic polygons |
| MatPlotLibNet.Notebooks | #r "nuget: MatPlotLibNet.Notebooks" |
Inline SVG in Polyglot / Jupyter notebooks |
| @matplotlibnet/angular | npm install @matplotlibnet/angular |
Angular components + TypeScript SignalR client |
| @matplotlibnet/react | npm install @matplotlibnet/react |
React hooks + components + TypeScript SignalR client |
| @matplotlibnet/vue | npm install @matplotlibnet/vue |
Vue 3 composables + TypeScript SignalR client |
Documentation
Full documentation is on the GitHub Wiki, the Cookbook (runnable examples with rendered images), and the API Reference (generated from XML doc comments):
- Playground — try charts live in the browser — pick an example, tweak parameters, see the SVG update instantly
- Cookbook — copy-paste code examples with rendered output for every chart type
- API Reference — full API documentation from source
- Getting Started — installation, output formats, subplots
- Fluent Cheatsheet — one-page reference for
Plt/FigureBuilder/AxesBuilder - Package Map — all 13 NuGet + 3 npm packages in detail
- Chart Types — all 74 series with code examples
- Streaming & Realtime — ring buffers, StreamingFigure, axis scaling, 11 streaming indicators, platform controls
- Interactive Controls — Avalonia + Uno native controls, managed interaction layer
- Bidirectional SignalR — server-authoritative interactive charts, event hierarchy, hub wiring
- DataFrame — indicators, polynomial regression from
Microsoft.Data.Analysis.DataFrame - Notebooks — Polyglot Notebooks + Jupyter inline rendering
- Styling — themes, colormaps, PropCycler
- Accessibility — SVG semantics, keyboard navigation, color-blind palette
- Advanced — date axes, math text, animations, GIF, real-time
- Benchmarks — SVG rendering, SIMD transforms, indicators
- Roadmap — version history and planned phases
- Contributing — build, test, coding conventions
Quick start
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");
Features
74 series types — line, scatter, bar, histogram, pie, box, violin, heatmap, contour, candlestick, OHLC, treemap, sunburst, Sankey, polar, polar heatmap, 3D surface, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, radar, waterfall, funnel, gauge, streaming line/scatter/signal/candlestick, and more.
Native UI controls — MplChartControl for Avalonia 12 and MplChartElement for Uno Platform render charts natively via SkiaSharp — no browser, no WebView, no SignalR required. 9 interaction modifiers: pan (drag), zoom (scroll), 3D rotation (right-drag), rectangle zoom (Ctrl+drag), brush select (Shift+drag), span select (Alt+drag), legend toggle (click), crosshair (passive), hover tooltip. Toolbar state model, view history (back/forward), data cursor (click-to-pin), tick mirroring, tight margins.
MathText — LaTeX-like inline math in any label or title: $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$. 96 symbol mappings (Greek, math operators, arrows, relations, set/logic, blackboard bold), fractions, square roots, accents, font variants, spacing, and scaling delimiters.
3-D charts — 12 series types: Surface, Scatter3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D (Delaunay), Contour3D (marching squares), Quiver3D (vector field), Voxels (face-culled cubes), Text3D (annotations). Full Projection3D pipeline, DepthQueue3D painter's algorithm, LightingHelper shading, Svg3DRotationScript client-side rotation with depth re-sorting, configurable Pane3DConfig (floor/wall colors), and 3D colorbar support.
Streaming & Realtime — StreamingLineSeries, StreamingScatterSeries, StreamingSignalSeries, StreamingCandlestickSeries backed by DoubleRingBuffer with AppendPoint(x, y). StreamingFigure provides throttled re-rendering and auto-scaling axes (SlidingWindow, StickyRight, AutoScale). 11 streaming indicators (SMA, EMA, RSI, Bollinger, MACD, OBV, ATR, Stochastic, WilliamsR, CCI, VWAP) auto-attach to candlestick data. Streaming controls for Avalonia, Uno, MAUI, Blazor, and ASP.NET Core. SVG diff engine for bandwidth optimization. Rx IObservable<T> adapter.
Geographic projections — MatPlotLibNet.Geo package with 5 map projections (PlateCarree, Mercator, Robinson, Orthographic, LambertConformal), GeoJSON parser, Natural Earth 110m embedded data, and GeoPolygonSeries for coastlines/borders/choropleth. Symlog axis scale for data spanning positive and negative ranges.
Bidirectional SignalR — server-authoritative interactive charts with mutation events (zoom, pan, reset, legend toggle) and notification events (brush-select, hover). Stacked-record event hierarchy, natural coalescing, per-caller hover responses.
104 colormaps — viridis, plasma, turbo, coolwarm, and 100 more. NumPy-style SIMD numerics (Vec, Mat, Linalg, Fft). Accessibility (ARIA, keyboard, Okabe-Ito palette, high-contrast theme). Matplotlib look-alike themes. DataFrame integration with 16 financial indicators. Broken axes. Publication-quality SVG/PNG/PDF/GIF export.
License
MIT — free for any use, open-source or commercial, with no copyleft conditions.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- System.Numerics.Tensors (>= 10.0.6)
-
net8.0
- System.Numerics.Tensors (>= 10.0.6)
NuGet packages (7)
Showing the top 5 NuGet packages that depend on MatPlotLibNet:
| Package | Downloads |
|---|---|
|
MatPlotLibNet.AspNetCore
ASP.NET Core endpoint helpers for MatPlotLibNet. Serves chart JSON specs for Angular and other SPA frameworks. |
|
|
MatPlotLibNet.Skia
PNG and PDF export for MatPlotLibNet charts using SkiaSharp. |
|
|
MatPlotLibNet.Blazor
Blazor components for MatPlotLibNet charting library. Renders charts as inline SVG. |
|
|
MatPlotLibNet.Maui
MAUI controls for MatPlotLibNet charting library. Renders charts via Microsoft.Maui.Graphics. |
|
|
MatPlotLibNet.Notebooks
Polyglot Notebooks / Jupyter support for MatPlotLibNet. Renders Figure inline as SVG in notebook cells. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.10.0 | 205 | 5/4/2026 |
| 1.9.0 | 237 | 4/23/2026 |
| 1.8.0 | 239 | 4/22/2026 |
| 1.7.3 | 233 | 4/21/2026 |
| 1.7.2 | 239 | 4/18/2026 |
| 1.7.1 | 217 | 4/18/2026 |
| 1.7.0 | 224 | 4/17/2026 |
| 1.6.0 | 218 | 4/17/2026 |
| 1.5.0 | 220 | 4/17/2026 |
| 1.4.1 | 212 | 4/17/2026 |
| 1.4.0 | 198 | 4/17/2026 |
| 1.3.0 | 218 | 4/16/2026 |
| 1.2.2 | 203 | 4/15/2026 |
| 1.2.1 | 202 | 4/15/2026 |
| 1.2.0 | 208 | 4/15/2026 |
| 1.1.4 | 200 | 4/15/2026 |
| 1.1.3 | 220 | 4/13/2026 |
| 1.1.1 | 219 | 4/12/2026 |
| 1.1.0 | 201 | 4/12/2026 |
| 1.0.2 | 205 | 4/12/2026 |