MatPlotLibNet
oficialPá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_charty obtén un PNG más un resumen de texto de lo que se dibujó. - Guarda gráficos en archivos — Usa
save_chartpara 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_typespara 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_schemacuando 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.
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
- Wiki — primeros pasos, hoja de referencia, los 83 tipos de gráficos, la sala de control, estilos, streaming, SignalR, paquetes
- Cookbook — ejemplos de copiar y pegar con salida renderizada
- Playground — prueba gráficos en vivo en el navegador
- Referencia de API — generada a partir de los documentos XML
- Benchmarks · Política de cobertura · CHANGELOG
Paquetes
| Paquete | Instalación | Qué hace |
|---|---|---|
| MatPlotLibNet | dotnet add package MatPlotLibNet | Núcleo: modelos, API fluida, renderizado SVG, JSON, transformaciones |
| MatPlotLibNet.DataFrame | dotnet add package MatPlotLibNet.DataFrame | Métodos de extensión Microsoft.Data.Analysis.DataFrame — grafica, indicadores (SMA/EMA/RSI/MACD/…) y regresión polinomial desde columnas nombradas |
| MatPlotLibNet.Skia | dotnet add package MatPlotLibNet.Skia | Exportación PNG, PDF y GIF animado mediante SkiaSharp |
| MatPlotLibNet.Blazor | dotnet add package MatPlotLibNet.Blazor | Componentes Razor MplChart + MplLiveChart con SignalR |
| MatPlotLibNet.AspNetCore | dotnet add package MatPlotLibNet.AspNetCore | Endpoints REST, hub de SignalR, IChartPublisher |
| MatPlotLibNet.Interactive | dotnet add package MatPlotLibNet.Interactive | figure.ShowAsync() — ventana emergente del navegador, sin necesidad de servidor |
| MatPlotLibNet.GraphQL | dotnet add package MatPlotLibNet.GraphQL | Consultas y suscripciones GraphQL mediante HotChocolate |
| MatPlotLibNet.Maui | dotnet add package MatPlotLibNet.Maui | MplChartView nativo mediante Microsoft.Maui.Graphics |
| MatPlotLibNet.Avalonia | dotnet add package MatPlotLibNet.Avalonia | MplChartControl nativo para Avalonia 12 — backend Skia, interacción local opcional |
| MatPlotLibNet.Uno | dotnet add package MatPlotLibNet.Uno | MplChartElement nativo para Uno Platform (WinUI 3 / Android / iOS / macCatalyst) |
| MatPlotLibNet.Wpf | dotnet add package MatPlotLibNet.Wpf | MplChartControl nativo de WPF mediante SkiaSharp — los 9 modificadores de interacción |
| MatPlotLibNet.Geo | dotnet add package MatPlotLibNet.Geo | 13 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.Mcp | dnx MatPlotLibNet.Mcp | Servidor MCP — un agente de IA renderiza gráficos a través de stdio (cookbook) |
| @matplotlibnet/angular | npm install @matplotlibnet/angular | Componentes Angular + cliente TypeScript de SignalR |
| @matplotlibnet/react | npm install @matplotlibnet/react | Hooks y componentes React + cliente TypeScript de SignalR |
| @matplotlibnet/vue | npm install @matplotlibnet/vue | Composables 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 IA — MatPlotLibNet.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 control — Plt.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 nativos — MplChartControl 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 real — StreamingLineSeries, 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.