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 にあります。
品質基準: クラス単位の厳格なカバレッジゲートを ≥90 % の行・分岐で適用 (679クラス、99.6 % / 97.3 %)、 11,022テストを実行し、レンダリングは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 | SignalR付き MplChart + MplLiveChart 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、ツリーマップ、サンバースト、サンキー、極座標、極座標ヒートマップ、3Dサーフェス、Bar3D、PlanarBar3D、Line3D、Trisurf3D、Contour3D、Quiver3D、Voxels、Text3D、レーダー、ウォーターフォール、ファネル、ゲージ、統計タイル (単一値KPI)、状態タイムライン (時間経過に伴う離散状態セグメント)、ペアグリッド、相対回転グラフ、ストリーミング折れ線/散布/シグナル/ローソク足、など。
MCPサーバー — AIエージェント向けチャート — MatPlotLibNet.Mcp は
Model Context Protocol サーバーであり、ホストがstdio経由で起動する.NETツールとして提供されます。4つのツール: 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() は1つのオペレーター画面を構成します: 上部のKPIタイル、その下の状態タイムライン、共有トレンドパネル。すべて呼び出し元が指定した1つの時間ウィンドウに固定されます (ライブラリは壁時計を読み取りません)。タイルには Target、折り返し対応の複数行 Caption、インラインスパークライン、情報なし を意味する Hatch が含まれます。Theme.Alarm は予約済みのアラーム色を定義し、4つのオペレーター背景が付属します。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 (マーチングスクエア)、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 が含まれます。正負両方の範囲にまたがるデータ用の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 — オープンソース、商用を問わず、コピーレフト条件なしで自由に使用できます。