MatPlotLibNet

официальный

Передайте ему JSON для графика, и он отрендерит PNG, который модель действительно сможет просмотреть — 83 типа графиков, SVG и PDF записываются в файл, работает локально как инструмент .NET.

Что можно делать с MatPlotLibNet MCP?

  • Рендеринг диаграмм из JSON-спецификаций — Запросите диаграмму через render_chart и получите PNG плюс текстовое резюме того, что было нарисовано.
  • Сохранение диаграмм в файлы — Используйте save_chart для экспорта диаграммы в PNG, SVG или PDF и получите путь к записанному файлу.
  • Изучение возможностей диаграмм — Запросите list_chart_types, чтобы увидеть все 83 поддерживаемых типа серий, от линейных графиков до 3D-поверхностей.
  • Проверка схем диаграмм — Получите ошибки на уровне полей от describe_chart_schema, когда спецификация диаграммы некорректна.

Документация

MatPlotLibNet

Библиотека для построения графиков на .NET 10 / .NET 8, вдохновлённая matplotlib: гибкий API, дружелюбная к DI, серверный экспорт в SVG / PNG / PDF / анимированный GIF, MCP-сервер, позволяющий ИИ-агенту рисовать с её помощью, и 83 типа серий. Поставляется с 13 картографическими проекциями и встроенными данными Natural Earth, 30 темами, MathText в стиле LaTeX, потоковой передачей O(1) с 53 техническими индикаторами, контрольной панелью (Plt.OpsDashboard() — плитки KPI, временные шкалы состояний, одно общее окно трендов), а также нативными элементами управления для Blazor, WPF, MAUI, Avalonia, Uno и ASP.NET Core, плюс TypeScript-клиенты для Angular, React и Vue. Никакого JavaScript-фреймворка, никакого WebView, никакого SaaS.

CI NuGet NuGet Downloads License: MIT GitHub stars

Куда это движется

Линейка 1.15 открывает библиотеку для агентов: MatPlotLibNet.Mcp — это сервер Model Context Protocol, поэтому модель может отрисовать любой из этих типов графиков из JSON-спецификации и посмотреть на результат — и ей сообщается, какое поле неверно, если спецификация не соответствует.

Предшествующая линейка 1.14 была посвящена контрольной панели: вместе с ней появились Plt.OpsDashboard() и анатомия плиток, а последующие релизы — это исправления и расширения, которые запросила живая операторская стена: вторичная ось Y, являющаяся полноправным гражданином, потоковая отрисовка в SVG, трёхмерные заголовки осей, очищающие собственные подписи, подписи плиток, которые переносятся и остаются внутри своей плитки, и окно операций, чьи деления читаются как время.

После этого ритм задаётся сообществом: исправления ошибок, документация и всё, что выявит реальное использование. Откройте обсуждение или issue — именно это направляет следующий релиз. Каждый релиз с примечаниями по миграции находится в CHANGELOG.

Планка качества: строгий порог покрытия на уровне класса ≥90 % по строкам и ветвям (679 классов, 99,6 % / 97,3 %) в 11 022 тестах, с проверкой рендеринга по эталонным изображениям пиксельной точности matplotlib.


Документация

  • Wiki — начало работы, шпаргалка, все 83 типа графиков, контрольная панель, стилизация, потоковая передача, SignalR, пакеты
  • Cookbook — примеры копирования и вставки с отрисованным результатом
  • Playground — попробуйте графики вживую в браузере
  • Справочник API — сгенерирован из XML-документации
  • Бенчмарки · Политика покрытия · CHANGELOG

Пакеты

ПакетУстановкаЧто делает
MatPlotLibNetdotnet add package MatPlotLibNetЯдро: модели, гибкий API, рендеринг SVG, JSON, преобразования
MatPlotLibNet.DataFramedotnet add package MatPlotLibNet.DataFrameМетоды расширения Microsoft.Data.Analysis.DataFrame — графики, индикаторы (SMA/EMA/RSI/MACD/…) и полиномиальная регрессия по именованным столбцам
MatPlotLibNet.Skiadotnet add package MatPlotLibNet.SkiaЭкспорт в PNG, PDF и анимированный GIF через SkiaSharp
MatPlotLibNet.Blazordotnet add package MatPlotLibNet.BlazorКомпоненты Razor MplChart + MplLiveChart с SignalR
MatPlotLibNet.AspNetCoredotnet add package MatPlotLibNet.AspNetCoreREST-конечные точки, хаб SignalR, IChartPublisher
MatPlotLibNet.Interactivedotnet add package MatPlotLibNet.Interactivefigure.ShowAsync() — всплывающее окно браузера, сервер не нужен
MatPlotLibNet.GraphQLdotnet add package MatPlotLibNet.GraphQLGraphQL-запросы и подписки через HotChocolate
MatPlotLibNet.Mauidotnet add package MatPlotLibNet.MauiНативный MplChartView через Microsoft.Maui.Graphics
MatPlotLibNet.Avaloniadotnet add package MatPlotLibNet.AvaloniaНативный MplChartControl для Avalonia 12 — бэкенд Skia, опциональное локальное взаимодействие
MatPlotLibNet.Unodotnet add package MatPlotLibNet.UnoНативный MplChartElement для Uno Platform (WinUI 3 / Android / iOS / macCatalyst)
MatPlotLibNet.Wpfdotnet add package MatPlotLibNet.WpfНативный WPF MplChartControl через SkiaSharp — все 9 модификаторов взаимодействия
MatPlotLibNet.Geodotnet add package MatPlotLibNet.Geo13 картографических проекций, парсер GeoJSON, встроенные данные Natural Earth 110m, географические полигоны
MatPlotLibNet.Notebooks#r "nuget: MatPlotLibNet.Notebooks"Встроенный SVG в блокнотах Polyglot / Jupyter
MatPlotLibNet.Mcpdnx MatPlotLibNet.McpMCP-сервер — ИИ-агент отрисовывает графики через stdio (cookbook)
@matplotlibnet/angularnpm install @matplotlibnet/angularКомпоненты Angular + TypeScript-клиент SignalR
@matplotlibnet/reactnpm install @matplotlibnet/reactХуки и компоненты React + TypeScript-клиент SignalR
@matplotlibnet/vuenpm install @matplotlibnet/vueКомпозаблы Vue 3 + TypeScript-клиент SignalR

Быстрый старт

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

Возможности

83 типа серий — линейный, точечный, столбчатый, гистограмма, круговая, ящик с усами, скрипичный, тепловая карта, контурный, свечной, OHLC, treemap, sunburst, Sankey, полярный, полярная тепловая карта, 3D-поверхность, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, радар, водопад, воронка, датчик, плитка состояния (однозначный KPI), временная шкала состояний (дискретные сегменты состояний во времени), сетка пар, граф относительного вращения, потоковые линейный/точечный/сигнальный/свечной и другие.

MCP-сервер — графики для ИИ-агентаMatPlotLibNet.Mcp — это сервер Model Context Protocol, поставляемый как инструмент .NET, который хост запускает через stdio. Четыре инструмента: render_chart (PNG плюс текстовое резюме того, что было нарисовано), save_chart (PNG/SVG/PDF в файл с возвратом записанного пути), list_chart_types и describe_chart_schema. Спецификация — это собственный JSON фигуры библиотеки, поэтому всё, что библиотека рисует, агент может запросить — и сервер отклоняет неверную спецификацию по имени поля до рендеринга, вместо того чтобы возвращать пустую картинку. См. cookbook.

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

Контрольная панельPlt.OpsDashboard() собирает один операторский экран: плитки KPI сверху, временные шкалы состояний под ними и общую панель трендов, все привязанные к одному окну времени, заданному вызывающей стороной (библиотека никогда не читает настенные часы). Плитка несёт Target, переносящуюся многострочную Caption, встроенный спарклайн и Hatch, означающий нет информации; Theme.Alarm называет зарезервированные цвета тревог, и с ней поставляются четыре фона оператора. BulletGraphSeries заменяет радиальный датчик.

Нативные элементы управления UIMplChartControl для Avalonia 12 и MplChartElement для Uno Platform отрисовывают графики нативно через SkiaSharp — без браузера, WebView и SignalR. 9 модификаторов взаимодействия: панорамирование (перетаскивание), масштабирование (колесо), 3D-вращение (перетаскивание правой кнопкой), прямоугольное масштабирование (Ctrl+перетаскивание), выделение кистью (Shift+перетаскивание), выделение диапазона (Alt+перетаскивание), переключение легенды (клик), перекрестие (пассивное), всплывающая подсказка. Модель состояний панели инструментов, история видов (назад/вперёд), курсор данных (клик для закрепления), зеркалирование делений, плотные поля.

MathText — встроенная математика в стиле LaTeX в любой подписи или заголовке: $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$. 96 сопоставлений символов (греческий, математические операторы, стрелки, отношения, множества/логика,黑板bold), дроби, квадратные корни, акценты, варианты шрифтов, интервалы и масштабируемые разделители.

3D-графики — 12 типов серий: Surface, Scatter3D, Bar3D, PlanarBar3D, Line3D, Trisurf3D (Delaunay), Contour3D (marching squares), Quiver3D (векторное поле), Voxels (кубы с отсечением граней), Text3D (аннотации). Полный конвейер Projection3D, алгоритм художника DepthQueue3D, затенение на основе расширений Vec3.FaceNormal + Color.Shade()/Color.Modulate(), клиентское вращение Svg3DRotationScript с повторной сортировкой по глубине, задние грани, определяемые камерой (CubeFaceSelection — панели, рёбра куба, сетки стен и деления осей следуют за камерой под любым азимутом, на сервере и во время перетаскивания), настраиваемый Pane3DConfig (цвета пола/стен) и поддержка 3D-цветовой шкалы.

Потоковая передача и реальное времяStreamingLineSeries, StreamingScatterSeries, StreamingSignalSeries, StreamingCandlestickSeries на основе DoubleRingBuffer с AppendPoint(x, y). StreamingFigure обеспечивает регулируемый повторный рендеринг и автоматическое масштабирование осей (SlidingWindow, StickyRight, AutoScale). 11 потоковых индикаторов (SMA, EMA, RSI, Bollinger, MACD, OBV, ATR, Stochastic, WilliamsR, CCI, VWAP) автоматически подключаются к свечным данным. Элементы управления потоковой передачей для Avalonia, Uno, MAUI, Blazor и ASP.NET Core. Движок сравнения SVG для оптимизации пропускной способности. Адаптер Rx IObservable<T>.

Географические проекции — пакет MatPlotLibNet.Geo с 5 картографическими проекциями (PlateCarree, Mercator, Robinson, Orthographic, LambertConformal), парсер GeoJSON, встроенные данные Natural Earth 110m и GeoPolygonSeries для береговых линий/границ/хороплетов. Логарифмическая шкала осей для данных, охватывающих положительные и отрицательные диапазоны.

Двунаправленный SignalR — интерактивные графики с авторитетом на сервере, с событиями мутаций (масштабирование, панорамирование, сброс, переключение легенды) и событиями уведомлений (выделение кистью, наведение). Иерархия событий со стековой записью, естественная коалесценция, ответы на наведение для каждого вызывающего.

142 цветовые карты — viridis, plasma, turbo, coolwarm и ещё 138 (71 базовая карта, каждая с автоматически зарегистрированным обратным вариантом _r). Численные вычисления в стиле NumPy с SIMD (Vec, Mat, Linalg, Fft). Доступность (ARIA, клавиатура, палитра Okabe-Ito, высококонтрастная тема). Темы, похожие на matplotlib. Интеграция с DataFrame и 53 техническими индикаторами. Разорванные оси. Экспорт в SVG/PNG/PDF/GIF публикационного качества.


Лицензия

MIT — бесплатно для любого использования, открытого или коммерческого, без условий копилефта.