MatPlotLibNet

oficial

Entregue o JSON de um gráfico e ele renderiza um PNG que o modelo pode realmente visualizar — 83 tipos de gráfico, SVG e PDF gravados em arquivo, executando localmente como uma ferramenta .NET.

O que você pode fazer com MatPlotLibNet MCP?

  • Renderizar gráficos a partir de especificações JSON — Solicite um gráfico via render_chart e receba um PNG além de um resumo em texto do que foi desenhado.
  • Salvar gráficos em arquivos — Use save_chart para exportar um gráfico como PNG, SVG ou PDF e receba o caminho do arquivo gravado.
  • Descobrir capacidades de gráficos — Consulte list_chart_types para ver todos os 83 tipos de séries suportados, de gráficos de linhas a superfícies 3D.
  • Validar esquemas de gráficos — Obtenha feedback de erros em nível de campo com describe_chart_schema quando uma especificação de gráfico estiver malformada.

Documentação

MatPlotLibNet

Uma biblioteca de gráficos para .NET 10 / .NET 8 inspirada no matplotlib: API fluente, compatível com DI, exportação server-side de SVG / PNG / PDF / GIF animado, um servidor MCP para que um agente de IA possa desenhar com ela, e 83 tipos de séries. Acompanha 13 projeções de mapa e dados embutidos do Natural Earth, 30 temas, MathText estilo LaTeX, streaming O(1) com 53 indicadores técnicos, uma sala de controle (Plt.OpsDashboard() — tiles de KPI, linhas do tempo de estado, uma janela de tendência compartilhada), e controles nativos para Blazor, WPF, MAUI, Avalonia, Uno e ASP.NET Core, além de clientes TypeScript para Angular, React e Vue. Sem framework JavaScript, sem WebView, sem SaaS.

CI NuGet NuGet Downloads License: MIT GitHub stars

Para onde isso está indo

A linha 1.15 abre a biblioteca para agentes: MatPlotLibNet.Mcp é um servidor Model Context Protocol, então um modelo pode renderizar qualquer um desses tipos de gráfico a partir de uma especificação JSON e ver o resultado — e é informado qual campo está errado quando a especificação não é uma delas.

A linha 1.14 anterior foi o trabalho da sala de controle: Plt.OpsDashboard() e a anatomia dos tiles chegaram com ela, e os lançamentos desde então são as correções e extensões que uma parede de operador ao vivo pediu — um eixo Y secundário que é um cidadão de pleno direito, streaming que desenha em SVG, títulos de eixo 3D que limpam seus próprios rótulos, legendas de tile que quebram linha e permanecem dentro do tile, e uma janela de operações cujas marcações são lidas como tempo.

Depois disso, o ritmo é conduzido pela comunidade: correções de bugs, documentação e o que o uso real trouxer. Abra uma Discussão ou uma Issue — é isso que orienta o próximo lançamento. Cada lançamento, com suas notas de migração, está no CHANGELOG.

Padrão de qualidade: uma porta de cobertura estrita por classe em ≥90% de linha e ramo (679 classes, 99,6% / 97,3%) em 11.022 testes, com renderização verificada contra fixtures de fidelidade de pixels do matplotlib.


Documentação


Pacotes

PacoteInstalaçãoO que faz
MatPlotLibNetdotnet add package MatPlotLibNetNúcleo: modelos, API fluente, renderização SVG, JSON, transformações
MatPlotLibNet.DataFramedotnet add package MatPlotLibNet.DataFrameMétodos de extensão Microsoft.Data.Analysis.DataFrame — plote, indicadores (SMA/EMA/RSI/MACD/…) e regressão polinomial a partir de colunas nomeadas
MatPlotLibNet.Skiadotnet add package MatPlotLibNet.SkiaExportação PNG, PDF e GIF animado via SkiaSharp
MatPlotLibNet.Blazordotnet add package MatPlotLibNet.BlazorComponentes Razor MplChart + MplLiveChart com SignalR
MatPlotLibNet.AspNetCoredotnet add package MatPlotLibNet.AspNetCoreEndpoints REST, hub SignalR, IChartPublisher
MatPlotLibNet.Interactivedotnet add package MatPlotLibNet.Interactivefigure.ShowAsync() — popup no navegador, sem necessidade de servidor
MatPlotLibNet.GraphQLdotnet add package MatPlotLibNet.GraphQLConsultas GraphQL + assinaturas via HotChocolate
MatPlotLibNet.Mauidotnet add package MatPlotLibNet.MauiMplChartView nativo via Microsoft.Maui.Graphics
MatPlotLibNet.Avaloniadotnet add package MatPlotLibNet.AvaloniaMplChartControl nativo para Avalonia 12 — backend Skia, interação local opcional
MatPlotLibNet.Unodotnet add package MatPlotLibNet.UnoMplChartElement nativo para Uno Platform (WinUI 3 / Android / iOS / macCatalyst)
MatPlotLibNet.Wpfdotnet add package MatPlotLibNet.WpfMplChartControl nativo para WPF via SkiaSharp — todos os 9 modificadores de interação
MatPlotLibNet.Geodotnet add package MatPlotLibNet.Geo13 projeções de mapa, parser GeoJSON, dados Natural Earth 110m embutidos, polígonos geográficos
MatPlotLibNet.Notebooks#r "nuget: MatPlotLibNet.Notebooks"SVG inline em notebooks Polyglot / Jupyter
MatPlotLibNet.Mcpdnx MatPlotLibNet.McpServidor MCP — um agente de IA renderiza gráficos via stdio (cookbook)
@matplotlibnet/angularnpm install @matplotlibnet/angularComponentes Angular + cliente TypeScript SignalR
@matplotlibnet/reactnpm install @matplotlibnet/reactHooks React + componentes + cliente TypeScript SignalR
@matplotlibnet/vuenpm install @matplotlibnet/vueComposables Vue 3 + cliente TypeScript SignalR

Início rápido

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

Recursos

83 tipos de séries — linha, dispersão, barra, histograma, pizza, caixa, violino, mapa de calor, contorno, candlestick, OHLC, treemap, sunburst, Sankey, polar, mapa de calor polar, superfície 3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, radar, cascata, funil, medidor, tile de estatística (KPI de valor único), linha do tempo de estado (segmentos de estado discreto ao longo do tempo), grade de pares, gráfico de rotação relativa, linha/dispersão/sinal/candlestick em streaming, e mais.

Servidor MCP — gráficos para um agente de IAMatPlotLibNet.Mcp é um servidor Model Context Protocol, distribuído como uma ferramenta .NET que um host inicia via stdio. Quatro ferramentas: render_chart (PNG mais um resumo em texto do que foi desenhado), save_chart (PNG/SVG/PDF para um arquivo, retornando o caminho que escreveu), list_chart_types e describe_chart_schema. A especificação é o próprio JSON de figura da biblioteca, então qualquer coisa que a biblioteca desenha, um agente pode solicitar — e o servidor recusa uma especificação errada pelo nome do campo antes de renderizar, em vez de retornar uma imagem em branco. Veja o cookbook.

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

Sala de controlePlt.OpsDashboard() compõe uma tela de operador: tiles de KPI no topo, linhas do tempo de estado abaixo deles, e um painel de tendência compartilhado, todos fixados em uma janela de tempo fornecida pelo chamador (a biblioteca nunca lê o relógio de parede). O tile carrega um Target, uma Caption multilinha com quebra automática, um sparkline inline e um Hatch que significa sem informação; Theme.Alarm nomeia as cores de alarme reservadas e quatro fundos de operador acompanham. BulletGraphSeries substitui o medidor radial.

Controles de UI nativosMplChartControl para Avalonia 12 e MplChartElement para Uno Platform renderizam gráficos nativamente via SkiaSharp — sem navegador, sem WebView, sem SignalR necessário. 9 modificadores de interação: pan (arrastar), zoom (rolar), rotação 3D (arrastar com botão direito), zoom retangular (Ctrl+arrastar), seleção por pincel (Shift+arrastar), seleção por intervalo (Alt+arrastar), alternância de legenda (clique), crosshair (passivo), tooltip de hover. Modelo de estado da barra de ferramentas, histórico de visualização (voltar/avançar), cursor de dados (clique para fixar), espelhamento de marcações, margens apertadas.

MathText — matemática inline estilo LaTeX em qualquer rótulo ou título: $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$. 96 mapeamentos de símbolos (grego, operadores matemáticos, setas, relações, conjuntos/lógica, blackboard bold), frações, raízes quadradas, acentos, variantes de fonte, espaçamento e delimitadores de escala.

Gráficos 3D — 12 tipos de séries: Surface, Scatter3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D (Delaunay), Contour3D (marching squares), Quiver3D (campo vetorial), Voxels (cubos com remoção de faces), Text3D (anotações). Pipeline completo de Projection3D, algoritmo do pintor DepthQueue3D, sombreamento baseado em extensão Vec3.FaceNormal + Color.Shade()/Color.Modulate(), rotação client-side Svg3DRotationScript com reordenação por profundidade, faces traseiras derivadas da câmera (CubeFaceSelection — os painéis, bordas do cubo, grades de parede e marcações de linha seguem a câmera em qualquer azimute, no servidor e durante um arrasto), Pane3DConfig configurável (cores de piso/parede) e suporte a colorbar 3D.

Streaming e tempo realStreamingLineSeries, StreamingScatterSeries, StreamingSignalSeries, StreamingCandlestickSeries apoiados por DoubleRingBuffer com AppendPoint(x, y). StreamingFigure fornece re-renderização limitada e eixos com auto-escala (SlidingWindow, StickyRight, AutoScale). 11 indicadores de streaming (SMA, EMA, RSI, Bollinger, MACD, OBV, ATR, Stochastic, WilliamsR, CCI, VWAP) anexam-se automaticamente a dados candlestick. Controles de streaming para Avalonia, Uno, MAUI, Blazor e ASP.NET Core. Mecanismo de diff SVG para otimização de largura de banda. Adaptador Rx IObservable<T>.

Projeções geográficas — pacote MatPlotLibNet.Geo com 5 projeções de mapa (PlateCarree, Mercator, Robinson, Orthographic, LambertConformal), parser GeoJSON, dados Natural Earth 110m embutidos e GeoPolygonSeries para costas/fronteiras/choropleth. Escala de eixo symlog para dados que abrangem faixas positivas e negativas.

SignalR bidirecional — gráficos interativos com autoridade no servidor, com eventos de mutação (zoom, pan, reset, alternância de legenda) e eventos de notificação (seleção por pincel, hover). Hierarquia de eventos com registros empilhados, coalescência natural, respostas de hover por chamador.

142 colormaps — viridis, plasma, turbo, coolwarm e mais 138 (71 mapas base, cada um com uma variante _r reversa registrada automaticamente). Numéricos SIMD estilo NumPy (Vec, Mat, Linalg, Fft). Acessibilidade (ARIA, teclado, paleta Okabe-Ito, tema de alto contraste). Temas que imitam o matplotlib. Integração com DataFrame com 53 indicadores técnicos. Eixos quebrados. Exportação de qualidade de publicação em SVG/PNG/PDF/GIF.


Licença

MIT — livre para qualquer uso, open-source ou comercial, sem condições de copyleft.