MatPlotLibNet
공식차트용 JSON을 전달하면 모델이 실제로 볼 수 있는 PNG를 렌더링합니다 — 83가지 차트 유형, SVG 및 PDF를 파일로 작성하며, .NET 도구로 로컬에서 실행됩니다.
MatPlotLibNet MCP(으)로 무엇을 할 수 있나요?
- JSON 사양에서 차트 렌더링 —
render_chart를 통해 차트를 요청하면 PNG와 함께 그려진 내용의 텍스트 요약을 받을 수 있습니다. - 차트를 파일로 저장 —
save_chart를 사용하여 차트를 PNG, SVG 또는 PDF로 내보내고 작성된 파일 경로를 받을 수 있습니다. - 차트 기능 탐색 —
list_chart_types를 쿼리하여 선 그래프부터 3D 표면까지 지원되는 83가지 시리즈 유형을 모두 확인할 수 있습니다. - 차트 스키마 검증 — 차트 사양이 잘못된 경우
describe_chart_schema에서 필드 수준의 오류 피드백을 받을 수 있습니다.
문서
MatPlotLibNet
matplotlib에서 영감을 받은 .NET 10 / .NET 8 차트 라이브러리: 유창한 API, DI 친화적,
서버 측 SVG / PNG / PDF / 애니메이션 GIF 내보내기, AI 에이전트가 그릴 수 있는 MCP 서버, 83개의 시리즈 유형. 13개의 지도 투영법과 내장된
Natural Earth 데이터, 30개의 테마, LaTeX 스타일 MathText, 53개의 기술 지표를 갖춘 O(1) 스트리밍, 컨트롤 룸
(Plt.OpsDashboard() — KPI 타일, 상태 타임라인, 하나의 공유 추세 창), 그리고 Blazor, WPF,
MAUI, Avalonia, Uno 및 ASP.NET Core용 네이티브 컨트롤, Angular, React 및 Vue용 TypeScript 클라이언트. JavaScript 프레임워크 없음,
WebView 없음, SaaS 없음.
향후 방향
1.15 라인은 라이브러리를 에이전트에 개방합니다: MatPlotLibNet.Mcp는 Model Context Protocol 서버이므로
모델은 JSON 사양에서 이러한 차트 유형 중 하나를 렌더링하고 결과를 볼 수 있습니다 — 그리고 사양이 올바르지 않으면
어떤 필드가 잘못되었는지 알려줍니다.
그 이전의 1.14 라인은 컨트롤 룸 작업이었습니다: Plt.OpsDashboard()와 타일 구조가 함께 도입되었고,
그 이후의 릴리스는 실시간 운영자 벽이 요청한 수정 및 확장입니다 — 완전한 시민인 보조 Y축,
SVG로 그리는 스트리밍, 자체 레이블을 지우는 3D 축 제목, 타일 안에 유지되는 줄바꿈 타일 캡션,
눈금이 시간으로 읽히는 운영 창.
그 후의 주기는 커뮤니티 주도입니다: 버그 수정, 문서화, 그리고 실제 사용에서 발견되는 모든 것. Discussion 또는 Issue를 여세요 — 그것이 다음 릴리스를 이끕니다. 모든 릴리스와 마이그레이션 노트는 CHANGELOG에 있습니다.
품질 기준: 11,022개의 테스트에서 클래스별 엄격한 적용 범위 게이트 ≥90% 라인 및 분기(679개 클래스, 99.6% / 97.3%), matplotlib 픽셀 충실도 픽스처에 대해 검증된 렌더링.
문서
- Wiki — 시작하기, 치트시트, 모든 83개 차트 유형, 컨트롤 룸, 스타일링, 스트리밍, SignalR, 패키지
- Cookbook — 렌더링된 출력이 있는 복사-붙여넣기 예제
- Playground — 브라우저에서 차트를 실시간으로 시도
- API Reference — XML 문서에서 생성
- Benchmarks · Coverage policy · CHANGELOG
패키지
| 패키지 | 설치 | 기능 |
|---|---|---|
| MatPlotLibNet | dotnet add package MatPlotLibNet | 핵심: 모델, 유창한 API, SVG 렌더링, JSON, 변환 |
| MatPlotLibNet.DataFrame | dotnet add package MatPlotLibNet.DataFrame | Microsoft.Data.Analysis.DataFrame 확장 메서드 — 명명된 열에서 플롯, 지표(SMA/EMA/RSI/MACD/…), 다항 회귀 |
| MatPlotLibNet.Skia | dotnet add package MatPlotLibNet.Skia | SkiaSharp를 통한 PNG, PDF 및 애니메이션 GIF 내보내기 |
| MatPlotLibNet.Blazor | dotnet add package MatPlotLibNet.Blazor | MplChart + MplLiveChart SignalR이 있는 Razor 구성 요소 |
| MatPlotLibNet.AspNetCore | dotnet add package MatPlotLibNet.AspNetCore | REST 엔드포인트, SignalR 허브, IChartPublisher |
| MatPlotLibNet.Interactive | dotnet add package MatPlotLibNet.Interactive | figure.ShowAsync() — 브라우저 팝업, 서버 불필요 |
| MatPlotLibNet.GraphQL | dotnet add package MatPlotLibNet.GraphQL | HotChocolate을 통한 GraphQL 쿼리 + 구독 |
| MatPlotLibNet.Maui | dotnet add package MatPlotLibNet.Maui | Microsoft.Maui.Graphics를 통한 네이티브 MplChartView |
| MatPlotLibNet.Avalonia | dotnet add package MatPlotLibNet.Avalonia | Avalonia 12용 네이티브 MplChartControl — Skia 백엔드, 선택적 로컬 상호작용 |
| MatPlotLibNet.Uno | dotnet add package MatPlotLibNet.Uno | Uno Platform용 네이티브 MplChartElement (WinUI 3 / Android / iOS / macCatalyst) |
| MatPlotLibNet.Wpf | dotnet add package MatPlotLibNet.Wpf | SkiaSharp를 통한 네이티브 WPF MplChartControl — 모든 9개 상호작용 수정자 |
| MatPlotLibNet.Geo | dotnet add package MatPlotLibNet.Geo | 13개 지도 투영법, GeoJSON 파서, Natural Earth 110m 데이터, 지리적 다각형 |
| MatPlotLibNet.Notebooks | #r "nuget: MatPlotLibNet.Notebooks" | Polyglot / Jupyter 노트북의 인라인 SVG |
| MatPlotLibNet.Mcp | dnx MatPlotLibNet.Mcp | MCP 서버 — AI 에이전트가 stdio를 통해 차트를 렌더링 (cookbook) |
| @matplotlibnet/angular | npm install @matplotlibnet/angular | Angular 구성 요소 + TypeScript SignalR 클라이언트 |
| @matplotlibnet/react | npm install @matplotlibnet/react | React 훅 + 구성 요소 + TypeScript SignalR 클라이언트 |
| @matplotlibnet/vue | npm 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, 트리맵, 선버스트, Sankey, 극좌표, 극좌표 히트맵, 3D 표면, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, 레이더, 폭포, 깔때기, 게이지, 상태 타일(단일 값 KPI), 상태 타임라인(시간에 따른 이산 상태 세그먼트), 쌍 그리드, 상대 회전 그래프, 스트리밍 선/산점도/신호/캔들스틱 등.
MCP 서버 — AI 에이전트용 차트 — MatPlotLibNet.Mcp는
Model Context Protocol 서버로, 호스트가 stdio를 통해 시작하는 .NET 도구로 제공됩니다. 네 가지 도구: render_chart (PNG 및 그려진 내용의 텍스트 요약), save_chart (PNG/SVG/PDF를 파일로 저장하고 작성된 경로 반환), list_chart_types 및
describe_chart_schema. 사양은 라이브러리 자체의 figure JSON이므로 라이브러리가 그릴 수 있는 모든 것을 에이전트가
요청할 수 있습니다 — 그리고 서버는 렌더링 전에 필드 이름으로 잘못된 사양을 거부하여 빈 그림을 반환하는 대신
오류를 알려줍니다. cookbook을 참조하세요.
{ "servers": { "MatPlotLibNet.Mcp": { "type": "stdio", "command": "dnx", "args": ["MatPlotLibNet.Mcp", "--yes"] } } }
컨트롤 룸 — Plt.OpsDashboard()는 하나의 운영자 화면을 구성합니다: 상단의 KPI 타일, 그 아래의 상태 타임라인,
그리고 공유 추세 패널 — 모두 호출자가 제공한 하나의 시간 창에 고정됩니다(라이브러리는 벽시계를 읽지 않습니다). 타일에는 Target, 줄바꿈되는 여러 줄 Caption, 인라인 스파크라인 및 정보 없음을 의미하는 Hatch가 포함됩니다; Theme.Alarm는 예약된 경보 색상을 명명하고 네 가지 운영자 배경이 함께 제공됩니다. BulletGraphSeries는 방사형 게이지를 대체합니다.
네이티브 UI 컨트롤 — Avalonia 12용 MplChartControl 및 Uno Platform용 MplChartElement는 SkiaSharp를 통해 차트를 네이티브로 렌더링합니다 — 브라우저, WebView, SignalR 불필요. 9개 상호작용 수정자: 팬(드래그), 줌(스크롤), 3D 회전(오른쪽 드래그), 사각형 줌(Ctrl+드래그), 브러시 선택(Shift+드래그), 범위 선택(Alt+드래그), 범례 토글(클릭), 십자선(수동), 호버 툴팁. 도구 모음 상태 모델, 보기 기록(뒤로/앞으로), 데이터 커서(클릭하여 고정), 눈금 미러링, 타이트 여백.
MathText — 모든 레이블 또는 제목의 LaTeX 유사 인라인 수학: $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$. 96개 기호 매핑(그리스어, 수학 연산자, 화살표, 관계, 집합/논리, 칠판 볼드), 분수, 제곱근, 악센트, 글꼴 변형, 간격 및 크기 조정 구분 기호.
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 diff 엔진. Rx IObservable<T> 어댑터.
지리적 투영법 — MatPlotLibNet.Geo 패키지: 5개 지도 투영법(PlateCarree, Mercator, Robinson, Orthographic, LambertConformal), GeoJSON 파서, Natural Earth 110m 내장 데이터, 해안선/경계/코로플레스용 GeoPolygonSeries. 양수 및 음수 범위에 걸친 데이터를 위한 Symlog 축 척도.
양방향 SignalR — 돌연변이 이벤트(줌, 팬, 재설정, 범례 토글) 및 알림 이벤트(브러시 선택, 호버)가 있는 서버 권위 인터랙티브 차트. 스택 레코드 이벤트 계층, 자연스러운 병합, 호출자별 호버 응답.
142개 컬러맵 — viridis, plasma, turbo, coolwarm 및 138개 더(71개 기본 맵, 각각 자동 등록된 역방향 _r 변형). NumPy 스타일 SIMD 수치 연산(Vec, Mat, Linalg, Fft). 접근성(ARIA, 키보드, Okabe-Ito 팔레트, 고대비 테마). Matplotlib 유사 테마. 53개 기술 지표가 있는 DataFrame 통합. 분할 축. 출판 품질 SVG/PNG/PDF/GIF 내보내기.
라이선스
MIT — 오픈소스 또는 상업적 용도 모두 무료이며, 카피레프트 조건이 없습니다.