MatPlotLibNet
ทางการส่ง JSON ของแผนภูมิให้มัน แล้วมันจะเรนเดอร์ PNG ที่โมเดลสามารถดูได้จริง — รองรับแผนภูมิ 83 ประเภท, เขียน SVG และ PDF ลงไฟล์, ทำงานในเครื่องเป็นเครื่องมือ .NET
คุณทำอะไรได้บ้างด้วย MatPlotLibNet MCP?
- เรนเดอร์แผนภูมิจาก JSON specs — ขอแผนภูมิผ่าน
render_chartแล้วรับไฟล์ PNG พร้อมสรุปข้อความว่าวาดอะไรลงไป - บันทึกแผนภูมิลงไฟล์ — ใช้
save_chartเพื่อส่งออกแผนภูมิเป็น PNG, SVG หรือ PDF และรับเส้นทางไฟล์ที่เขียนไว้ - ค้นหาความสามารถของแผนภูมิ — ค้นหา
list_chart_typesเพื่อดูประเภทซีรีส์ที่รองรับทั้งหมด 83 ประเภท ตั้งแต่พล็อตเส้นไปจนถึงพื้นผิว 3D - ตรวจสอบ schema ของแผนภูมิ — รับข้อความแสดงข้อผิดพลาดระดับฟิลด์จาก
describe_chart_schemaเมื่อสเปกแผนภูมิไม่ถูกต้อง
เอกสาร
MatPlotLibNet
ไลบรารีการสร้างแผนภูมิสำหรับ .NET 10 / .NET 8 ที่ได้รับแรงบันดาลใจจาก matplotlib: API แบบลื่นไหล, เหมาะกับ DI,
การส่งออก SVG / PNG / PDF / GIF แบบเคลื่อนไหวฝั่งเซิร์ฟเวอร์, เซิร์ฟเวอร์ MCP ที่ทำให้เอเจนต์ AI สามารถวาดแผนภูมิได้ และประเภทซีรีส์ 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
ทิศทางของโปรเจกต์นี้
ไลน์เวอร์ชัน 1.15 เปิดไลบรารีให้เอเจนต์ใช้งาน: MatPlotLibNet.Mcp คือเซิร์ฟเวอร์ Model Context Protocol ดังนั้น
โมเดลสามารถเรนเดอร์แผนภูมิประเภทใดก็ได้จากสเปก JSON และดูผลลัพธ์ — และจะได้รับแจ้งว่าฟิลด์ใดผิด
เมื่อสเปกไม่ถูกต้อง
ไลน์เวอร์ชัน 1.14 ก่อนหน้านั้นเป็นงานห้องควบคุม: Plt.OpsDashboard() และโครงสร้างไทล์มาพร้อมกับมัน
และการเผยแพร่หลังจากนั้นคือการแก้ไขและส่วนขยายที่ผนังผู้ปฏิบัติงานจริงต้องการ — แกน Y รองที่
เป็นสมาชิกเต็มรูปแบบ, การสตรีมที่วาดใน SVG, ชื่อแกน 3 มิติที่ล้างป้ายกำกับของตัวเอง, คำอธิบายไทล์ที่
ตัดบรรทัดและอยู่ภายในไทล์ของตัวเอง และหน้าต่างปฏิบัติการที่ติ๊กอ่านเป็นเวลา
หลังจากนั้นจังหวะการพัฒนาขับเคลื่อนโดยชุมชน: การแก้ไขบั๊ก, เอกสารประกอบ และสิ่งที่การใช้งานจริงพบเจอ เปิด Discussion หรือ Issue — นั่นคือสิ่งที่กำหนดทิศทางการเผยแพร่ครั้งถัดไป ทุกการเผยแพร่ พร้อมบันทึกการย้ายเวอร์ชัน อยู่ใน CHANGELOG
มาตรฐานคุณภาพ: เกณฑ์ความครอบคลุมต่อคลาสอย่างเข้มงวดที่ ≥90% ของบรรทัดและสาขา (679 คลาส, 99.6% / 97.3%) จาก การทดสอบ 11,022 รายการ โดยการเรนเดอร์ตรวจสอบกับฟิกซ์เจอร์ความเที่ยงตรงของพิกเซลของ matplotlib
เอกสารประกอบ
- Wiki — เริ่มต้นใช้งาน, เอกสารสรุป, แผนภูมิทั้ง 83 ประเภท, ห้อง ควบคุม, การจัดรูปแบบ, การสตรีม, SignalR, แพ็กเกจ
- Cookbook — ตัวอย่างคัดลอกและวางพร้อมผลลัพธ์ที่เรนเดอร์แล้ว
- Playground — ทดลองแผนภูมิสดในเบราว์เซอร์
- API Reference — สร้างจากเอกสาร XML
- Benchmarks · นโยบายความครอบคลุม · 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 | การส่งออก PNG, PDF และ GIF แบบเคลื่อนไหวผ่าน SkiaSharp |
| MatPlotLibNet.Blazor | dotnet add package MatPlotLibNet.Blazor | คอมโพเนนต์ Razor MplChart + MplLiveChart พร้อม SignalR |
| 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 | คิวรี GraphQL + การสมัครสมาชิกผ่าน HotChocolate |
| MatPlotLibNet.Maui | dotnet add package MatPlotLibNet.Maui | MplChartView เนทีฟผ่าน Microsoft.Maui.Graphics |
| MatPlotLibNet.Avalonia | dotnet add package MatPlotLibNet.Avalonia | MplChartControl เนทีฟสำหรับ Avalonia 12 — แบ็กเอนด์ Skia, การโต้ตอบในเครื่องแบบไม่บังคับ |
| MatPlotLibNet.Uno | dotnet add package MatPlotLibNet.Uno | MplChartElement เนทีฟสำหรับ Uno Platform (WinUI 3 / Android / iOS / macCatalyst) |
| MatPlotLibNet.Wpf | dotnet add package MatPlotLibNet.Wpf | MplChartControl เนทีฟ WPF ผ่าน SkiaSharp — ตัวปรับการโต้ตอบทั้ง 9 แบบ |
| MatPlotLibNet.Geo | dotnet add package MatPlotLibNet.Geo | การฉายแผนที่ 13 แบบ, ตัวแยกวิเคราะห์ GeoJSON, ข้อมูล Natural Earth 110m, รูปหลายเหลี่ยมทางภูมิศาสตร์ |
| MatPlotLibNet.Notebooks | #r "nuget: MatPlotLibNet.Notebooks" | SVG แบบอินไลน์ในโน้ตบุ๊ก Polyglot / Jupyter |
| MatPlotLibNet.Mcp | dnx MatPlotLibNet.Mcp | เซิร์ฟเวอร์ MCP — เอเจนต์ AI เรนเดอร์แผนภูมิผ่าน stdio (cookbook) |
| @matplotlibnet/angular | npm install @matplotlibnet/angular | คอมโพเนนต์ Angular + ไคลเอนต์ SignalR TypeScript |
| @matplotlibnet/react | npm install @matplotlibnet/react | ฮุก React + คอมโพเนนต์ + ไคลเอนต์ SignalR TypeScript |
| @matplotlibnet/vue | npm install @matplotlibnet/vue | คอมโพซาเบิล Vue 3 + ไคลเอนต์ SignalR TypeScript |
เริ่มต้นใช้งานอย่างรวดเร็ว
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, เทรแมป, ซันเบิร์สต์, ซันคีย์, โพลาร์, โพลาร์ฮีตแมป, พื้นผิว 3 มิติ, Bar3D, PlanarBar3D, Line3D, Trisurf3D, Contour3D, Quiver3D, Voxels, Text3D, เรดาร์, วอเทอร์ฟอล, ฟันเนล, เกจ, ไทล์สถิติ (KPI ค่าเดียว), ไทม์ไลน์สถานะ (ส่วนสถานะไม่ต่อเนื่องตามเวลา), กริดคู่, กราฟการหมุนสัมพัทธ์, เส้น/สแกตเตอร์/สัญญาณ/แคนเดิลสติกแบบสตรีม และอื่นๆ อีกมากมาย
เซิร์ฟเวอร์ MCP — แผนภูมิสำหรับเอเจนต์ AI — 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 แทนที่เกจเรเดียล
คอนโทรล UI เนทีฟ — MplChartControl สำหรับ Avalonia 12 และ MplChartElement สำหรับ Uno Platform เรนเดอร์แผนภูมิแบบเนทีฟผ่าน SkiaSharp — ไม่ต้องใช้เบราว์เซอร์, ไม่มี WebView, ไม่ต้องใช้ SignalR ตัวปรับการโต้ตอบ 9 แบบ: แพน (ลาก), ซูม (เลื่อน), หมุน 3 มิติ (ลากขวา), ซูมสี่เหลี่ยม (Ctrl+ลาก), เลือกแปรง (Shift+ลาก), เลือกช่วง (Alt+ลาก), สลับคำอธิบาย (คลิก), ครอสแฮร์ (แบบพาสซีฟ), ทูลทิปเมื่อโฮเวอร์ โมเดลสถานะแถบเครื่องมือ, ประวัติมุมมอง (ย้อนกลับ/ไปข้างหน้า), เคอร์เซอร์ข้อมูล (คลิกเพื่อปักหมุด), การสะท้อนติ๊ก, ระยะขอบกระชับ
MathText — คณิตศาสตร์แบบอินไลน์คล้าย LaTeX ในป้ายกำกับหรือชื่อใดๆ: $\alpha^{2}$, $\frac{a}{b}$, $\sqrt{x}$, $\hat{x}$, $\mathbf{F}$, $\mathbb{R}$ การแมปสัญลักษณ์ 96 แบบ (กรีก, ตัวดำเนินการคณิตศาสตร์, ลูกศร, ความสัมพันธ์, เซต/ตรรกะ, ตัวหนากระดานดำ), เศษส่วน, รากที่สอง, เครื่องหมายเสริม, รูปแบบตัวอักษร, การเว้นวรรค และตัวคั่นปรับขนาด
แผนภูมิ 3 มิติ — ประเภทซีรีส์ 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 ที่ปรับได้ (สีพื้น/ผนัง) และการรองรับคัลเลอร์บาร์ 3 มิติ
การสตรีมและเรียลไทม์ — 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 เอ็นจิน diff 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 แบบกลับด้านที่ลงทะเบียนอัตโนมัติ) ตัวเลข SIMD แบบ NumPy (Vec, Mat, Linalg, Fft) การเข้าถึง (ARIA, คีย์บอร์ด, จานสี Okabe-Ito, ธีมคอนทราสต์สูง) ธีมเลียนแบบ Matplotlib การรวม DataFrame พร้อมตัวชี้วัดทางเทคนิค 53 ตัว แกนหัก การส่งออก SVG/PNG/PDF/GIF คุณภาพระดับสิ่งพิมพ์
สัญญาอนุญาต
MIT — ฟรีสำหรับการใช้งานใดๆ ทั้งโอเพนซอร์สหรือเชิงพาณิชย์ โดยไม่มีเงื่อนไขคอปyleft