MatPlotLibNet

oficial

Pásale el JSON de un gráfico y renderiza un PNG que el modelo realmente puede ver: 83 tipos de gráficos, SVG y PDF escritos en archivo, ejecutándose localmente como una herramienta .NET.

¿Qué puedes hacer con MatPlotLibNet MCP?

  • Renderiza gráficos a partir de especificaciones JSON — Solicita un gráfico mediante render_chart y obtén un PNG más un resumen de texto de lo que se dibujó.
  • Guarda gráficos en archivos — Usa save_chart para exportar un gráfico como PNG, SVG o PDF y recibe la ruta del archivo escrito.
  • Descubre las capacidades de los gráficos — Consulta list_chart_types para ver los 83 tipos de series compatibles, desde gráficos de líneas hasta superficies 3D.
  • Valida esquemas de gráficos — Obtén comentarios de errores a nivel de campo desde describe_chart_schema cuando una especificación de gráfico esté mal formada.

Documentación

MatPlotLibNet

Una biblioteca de gráficos para .NET 10 / .NET 8 inspirada en matplotlib: API fluida, compatible con DI, exportación de SVG / PNG / PDF / GIF animado del lado del servidor, un servidor MCP para que un agente de IA pueda dibujar con ella, y 83 tipos de series. Incluye 13 proyecciones de mapas y datos integrados de Natural Earth, 30 temas, MathText estilo LaTeX, streaming O(1) con 53 indicadores técnicos, una sala de control (Plt.OpsDashboard() — mosaicos KPI, líneas de tiempo de estado, una ventana de tendencia compartida), y controles nativos para Blazor, WPF, MAUI, Avalonia, Uno y ASP.NET Core, además de clientes TypeScript para Angular, React y Vue. Sin framework de JavaScript, sin WebView, sin SaaS.

CI NuGet NuGet Downloads License: MIT GitHub stars

Hacia dónde va esto

La línea 1.15 abre la biblioteca a los agentes: MatPlotLibNet.Mcp es un servidor de Model Context Protocol, por lo que un modelo puede renderizar cualquiera de estos tipos de gráficos a partir de una especificación JSON y ver el resultado — y se le indica qué campo está mal cuando la especificación no es una de ellas.

La línea 1.14 anterior fue trabajo de sala de control: Plt.OpsDashboard() y la anatomía de los mosaicos llegaron con ella, y los lanzamientos posteriores son las correcciones y extensiones que pidió un muro de operadores en vivo — un eje Y secundario que es un ciudadano de pleno derecho, streaming que dibuja en SVG, títulos de ejes 3D que limpian sus propias etiquetas, subtítulos de mosaicos que se ajustan y permanecen dentro de su mosaico, y una ventana de operaciones cuyas marcas se leen como tiempo.

Después de eso, el ritmo es impulsado por la comunidad: correcciones de errores, documentación y cualquier uso real que surja. Abre una Discusión o un Issue — eso es lo que guía el próximo lanzamiento. Cada lanzamiento, con sus notas de migración, está en el CHANGELOG.

Estándar de calidad: una puerta de cobertura estricta por clase en ≥90 % de líneas y ramas (679 clases, 99.6 % / 97.3 %) en 11,022 pruebas, con renderizado verificado contra fixtures de fidelidad de píxeles de matplotlib.


Documentación


Paquetes

PaqueteInstalaciónQué hace
MatPlotLibNetdotnet add package MatPlotLibNetNúcleo: modelos, API fluida, renderizado SVG, JSON, transformaciones
MatPlotLibNet.DataFramedotnet add package MatPlotLibNet.DataFrameMétodos de extensión Microsoft.Data.Analysis.DataFrame — grafica, indicadores (SMA/EMA/RSI/MACD/…) y regresión polinomial desde columnas nombradas
MatPlotLibNet.Skiadotnet add package MatPlotLibNet.SkiaExportación PNG, PDF y GIF animado mediante SkiaSharp
MatPlotLibNet.Blazordotnet add package MatPlotLibNet.BlazorComponentes Razor MplChart + MplLiveChart con SignalR
MatPlotLibNet.AspNetCoredotnet add package MatPlotLibNet.AspNetCoreEndpoints REST, hub de SignalR, IChartPublisher
MatPlotLibNet.Interactivedotnet add package MatPlotLibNet.Interactivefigure.ShowAsync() — ventana emergente del navegador, sin necesidad de servidor
MatPlotLibNet.GraphQLdotnet add package MatPlotLibNet.GraphQLConsultas y suscripciones GraphQL mediante HotChocolate
MatPlotLibNet.Mauidotnet add package MatPlotLibNet.MauiMplChartView nativo mediante Microsoft.Maui.Graphics
MatPlotLibNet.Avaloniadotnet add package MatPlotLibNet.AvaloniaMplChartControl nativo para Avalonia 12 — backend Skia, interacción local opcional
MatPlotLibNet.Unodotnet add package MatPlotLibNet.UnoMplChartElement nativo para Uno Platform (WinUI 3 / Android / iOS / macCatalyst)
MatPlotLibNet.Wpfdotnet add package MatPlotLibNet.WpfMplChartControl nativo de WPF mediante SkiaSharp — los 9 modificadores de interacción
MatPlotLibNet.Geodotnet add package MatPlotLibNet.Geo13 proyecciones de mapas, analizador GeoJSON, datos Natural Earth 110m, polígonos geográficos
MatPlotLibNet.Notebooks#r "nuget: MatPlotLibNet.Notebooks"SVG en línea en cuadernos Polyglot / Jupyter
MatPlotLibNet.Mcpdnx MatPlotLibNet.McpServidor MCP — un agente de IA renderiza gráficos a través de stdio (cookbook)
@matplotlibnet/angularnpm install @matplotlibnet/angularComponentes Angular + cliente TypeScript de SignalR
@matplotlibnet/reactnpm install @matplotlibnet/reactHooks y componentes React + cliente TypeScript de SignalR
@matplotlibnet/vuenpm install @matplotlibnet/vueComposables Vue 3 + cliente TypeScript de SignalR

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

Características

83 tipos de series — línea, dispersión, barras, histograma, pastel, caja, violín, mapa de calor, contorno, velas, OHLC, treemap, sunburst, Sankey, polar, mapa de calor polar, superficie 3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, radar, cascada, embudo, indicador, mosaico de estadísticas (KPI de valor único), línea de tiempo de estado (segmentos de estado discretos a lo largo del tiempo), cuadrícula de pares, gráfico de rotación relativa, línea de streaming/dispersión/señal/velas, y más.

Servidor MCP — gráficos para un agente de IAMatPlotLibNet.Mcp es un servidor de Model Context Protocol, distribuido como una herramienta .NET que un host inicia a través de stdio. Cuatro herramientas: render_chart (PNG más un resumen de texto de lo que se dibujó), save_chart (PNG/SVG/PDF a un archivo, devolviendo la ruta que escribió), list_chart_types y describe_chart_schema. La especificación es el propio JSON de figuras de la biblioteca, por lo que cualquier cosa que la biblioteca dibuje, un agente puede solicitarla — y el servidor rechaza una especificación incorrecta por nombre de campo antes de renderizar, en lugar de devolver una imagen en blanco. Consulta el cookbook.

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

Sala de controlPlt.OpsDashboard() compone una pantalla de operador: mosaicos KPI en la parte superior, líneas de tiempo de estado debajo, y un panel de tendencia compartido, todo fijado a una ventana de tiempo proporcionada por el llamador (la biblioteca nunca lee el reloj del sistema). El mosaico lleva un Target, un Caption multilínea que se ajusta, un sparkline en línea y un Hatch que significa sin información; Theme.Alarm nombra los colores de alarma reservados y cuatro fondos de operador vienen con él. BulletGraphSeries reemplaza el indicador radial.

Controles de UI nativosMplChartControl para Avalonia 12 y MplChartElement para Uno Platform renderizan gráficos de forma nativa mediante SkiaSharp — sin navegador, sin WebView, sin SignalR requerido. 9 modificadores de interacción: pan (arrastrar), zoom (desplazarse), rotación 3D (arrastrar con botón derecho), zoom rectangular (Ctrl+arrastrar), selección de pincel (Shift+arrastrar), selección de intervalo (Alt+arrastrar), alternar leyenda (clic), crosshair (pasivo), tooltip al pasar el cursor. Modelo de estado de barra de herramientas, historial de vistas (atrás/adelante), cursor de datos (clic para fijar), espejo de marcas, márgenes ajustados.

MathText — matemáticas en línea estilo LaTeX en cualquier etiqueta o título: $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$. 96 mapeos de símbolos (griego, operadores matemáticos, flechas, relaciones, conjuntos/lógica, negrita de pizarra), fracciones, raíces cuadradas, acentos, variantes de fuente, espaciado y delimitadores de escala.

Gráficos 3-D — 12 tipos de series: Surface, Scatter3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D (Delaunay), Contour3D (marching squares), Quiver3D (campo vectorial), Voxels (cubos con eliminación de caras), Text3D (anotaciones). Pipeline completo de Projection3D, algoritmo de pintor DepthQueue3D, sombreado basado en extensiones Vec3.FaceNormal + Color.Shade()/Color.Modulate(), rotación del lado del cliente Svg3DRotationScript con reordenamiento de profundidad, caras traseras derivadas de la cámara (CubeFaceSelection — los paneles, bordes del cubo, cuadrículas de pared y marcas de fila siguen la cámara en cualquier azimut, del lado del servidor y durante un arrastre), Pane3DConfig configurable (colores de piso/pared) y soporte de barra de color 3D.

Streaming y tiempo realStreamingLineSeries, StreamingScatterSeries, StreamingSignalSeries, StreamingCandlestickSeries respaldados por DoubleRingBuffer con AppendPoint(x, y). StreamingFigure proporciona re-renderizado limitado y ejes con autoescalado (SlidingWindow, StickyRight, AutoScale). 11 indicadores de streaming (SMA, EMA, RSI, Bollinger, MACD, OBV, ATR, Stochastic, WilliamsR, CCI, VWAP) se adjuntan automáticamente a datos de velas. Controles de streaming para Avalonia, Uno, MAUI, Blazor y ASP.NET Core. Motor de diff SVG para optimización de ancho de banda. Adaptador Rx IObservable<T>.

Proyecciones geográficas — paquete MatPlotLibNet.Geo con 5 proyecciones de mapas (PlateCarree, Mercator, Robinson, Orthographic, LambertConformal), analizador GeoJSON, datos integrados Natural Earth 110m y GeoPolygonSeries para costas/fronteras/choropleth. Escala de eje symlog para datos que abarcan rangos positivos y negativos.

SignalR bidireccional — gráficos interactivos autoritativos del servidor con eventos de mutación (zoom, pan, restablecer, alternar leyenda) y eventos de notificación (selección de pincel, hover). Jerarquía de eventos de registros apilados, coalescencia natural, respuestas de hover por llamador.

142 colormaps — viridis, plasma, turbo, coolwarm y 138 más (71 mapas base, cada uno con una variante _r invertida registrada automáticamente). Numéricos SIMD estilo NumPy (Vec, Mat, Linalg, Fft). Accesibilidad (ARIA, teclado, paleta Okabe-Ito, tema de alto contraste). Temas que imitan a Matplotlib. Integración con DataFrame con 53 indicadores técnicos. Ejes rotos. Exportación de calidad de publicación SVG/PNG/PDF/GIF.


Licencia

MIT — gratis para cualquier uso, de código abierto o comercial, sin condiciones de copyleft.