Repository navigation
Home
Matplotlib-inspired charting for .NET. Server-rendered SVG / PNG / PDF / animated GIF, an MCP server so an
AI agent can draw with it, 83 series types, 13 map
projections with embedded Natural Earth data, 30 themes, LaTeX-style MathText, O(1) streaming with 53 technical
indicators, a control room (Plt.OpsDashboard() — KPI tiles, state timelines, one shared trend window), and
native controls for Blazor, WPF, MAUI, Avalonia, Uno and ASP.NET Core. Fluent API, DI-friendly — no JavaScript
framework, no WebView, no SaaS.
Version 1.14.4 is the current release. Coming in 1.15.0: MatPlotLibNet.Mcp opens the library to
agents — a Model Context Protocol server a host starts over stdio, so Claude or VS Code can render any of these
chart types from a JSON spec and look at the result. It is on main now; see MCP Server.
The 1.14 line is control-room work: the pack itself, then the fixes and extensions it asked for (a secondary Y axis that is a full citizen, streaming that draws in SVG, 3-D axis titles that clear their own labels, one anatomy per row of tiles, and a hidden axis that reserves no room — which is what finally let a row of tiles be as wide as it looks). · NuGet · Changelog · License: MIT
dotnet add package MatPlotLibNetPlt.Create()
.AddSubPlot(1, 1, 1, ax => ax.Plot(x, y, s => s.Label = "signal"))
.SaveSvg("chart.svg");| Page | For |
|---|---|
| Getting Started | install, first chart, output formats, subplots |
| Fluent Cheatsheet | one page: Plt · FigureBuilder · AxesBuilder
|
| Chart Types | all 83 series with code — including the control room |
| Package Map | which of the 14 NuGet + 3 npm packages you need |
| Styling · MatplotlibThemes | themes, colours, fonts, layout |
| Advanced | animation, geo projections, MathText, DI |
| Streaming | live data, O(1) ring buffers, indicators |
| Bidirectional SignalR | push charts to Blazor / Angular / React / Vue |
| Interactive Controls · Keyboard Shortcuts | pan, zoom, brush-select, hotkeys |
| Notebooks | Polyglot / Jupyter |
| Accessibility | ARIA, contrast, screen readers |
| Benchmarks | render and export timings |
| Roadmap · Contributing | where it is going, how to help |
Also: Playground · Cookbook · API Reference.
| You are… | You get… |
|---|---|
| Blazor / ASP.NET Core |
<MplChart> and <MplLiveChart>, SignalR push, a REST endpoint — wired with standard DI |
| WPF / MAUI / Avalonia / Uno | native controls (SkiaSharp or Microsoft.Maui.Graphics), pan / zoom / brush-select, no WebView |
| Data scientist | inline SVG in notebooks, plotting straight from Microsoft.Data.Analysis.DataFrame
|
| Trading / finance | candlestick, OHLC, 53 indicators, drawing tools, backtest panels, RRG |
| Ops / control room |
Plt.OpsDashboard() — KPI tiles, state timelines, one shared trend window |
| Backend / headless | render SVG, PNG, PDF or GIF server-side with zero UI dependencies |
| Angular / React / Vue | TypeScript clients on the same hub and the same chart definitions |
Not a JavaScript wrapper, not a WebView host, not a hosted service. Charts are built and rendered in .NET; what leaves the process is a picture or a chart definition.
Every class passes a strict per-class coverage gate at ≥90 % line and branch (currently 659 classes, 99.6 % line / 97.2 % branch) across 10,025 tests. Rendering is verified against matplotlib pixel-fidelity fixtures.
Questions or something missing? Open a Discussion or an Issue — releases follow what people actually need.
MatPlotLibNet 1.22.0
- Home
- Getting Started
- Fluent Cheatsheet
- Examples — each release in code
-
Package Map
- MatPlotLibNet — the core package
- Chart Types
- Styling
- Advanced
- Streaming
- Bidirectional SignalR
- Interactive Controls
- MCP Server
- Verso
- Notebooks
- Accessibility
- International Text
- Benchmarks
- Roadmap
- Contributing