.NET 開源免費圖表元件庫,Winform,WPF 通用

SpringLeee 發表於 2021-11-26
.Net

.NET 開源免費圖表元件庫,Winform,WPF 通用

大家好, 我是等天黑, 今天給大家介紹一個功能完善, 效能強悍的圖表元件庫 ScottPlot, 當我第一次在 github 上看到這個庫, 我看不懂,但我大受震撼, 這麼好的專案當然要分享出來了。

https://github.com/ScottPlot/ScottPlot

ScottPlot 是一個 .NET 圖表元件, 主要有以下特點:

  • 適用範圍廣:同時適用於 WinForms, WPF, Avalonia, Console, 支援 .NET Framework 4.6.1 及以上, NET Core 2.0 至 .NET 5。
  • 上手簡單:只需幾行程式碼即可建立折線圖、條形圖、餅圖、散點圖等。
  • 效能強悍:千萬級資料處理無壓力, 媲美 Python Matplotlib。
  • 可互動:支援使用者和圖表資料進行互動, 注入靈魂。
  • 開源免費:基於MIT開源協議, 已經開源近5年, 不存在版權和收費問題
  • 元件豐富:圖表元件非常全面,可滿足各種場景下的展示需求。

.NET 開源免費圖表元件庫,Winform,WPF 通用

圖表接入

⚡ Winform

  1. 通過Nuget安裝 ScottPlot.WinForms
  2. 安裝完成後, 就可以在工具箱找到 ScottPlot 元件, 然後拖到 Winform 窗體上。
  3. 填充圖表資料, 完成!
double[] dataX = new double[] {1, 2, 3, 4, 5};
double[] dataY = new double[] {1, 4, 9, 16, 25};
formsPlot1.Plot.AddScatter(dataX, dataY);
formsPlot1.Refresh();

.NET 開源免費圖表元件庫,Winform,WPF 通用

⚡ WPF

  1. 通過Nuget安裝 ScottPlot.WPF
  2. 新增一個 WpfPlot 元件到佈局中, 並設定Name
<WpfPlot Name="WpfPlot1" />
  1. 同樣, 填充圖表資料, 完成!
double[] dataX = new double[] { 1, 2, 3, 4, 5 };
double[] dataY = new double[] { 1, 4, 9, 16, 25 };
WpfPlot1.Plot.AddScatter(dataX, dataY);
WpfPlot1.Refresh();

.NET 開源免費圖表元件庫,Winform,WPF 通用

⚡ Console App

當然也可以在控制檯應用中使用該圖表元件, 和上面不同的是, 它會渲染成一張圖片, 然後可以儲存到本地

  1. 通過Nuget安裝 ScottPlot
  2. 填充圖表資料並儲存為圖片

.NET 開源免費圖表元件庫,Winform,WPF 通用

圖表示例

.NET 開源免費圖表元件庫,Winform,WPF 通用

.NET 開源免費圖表元件庫,Winform,WPF 通用

.NET 開源免費圖表元件庫,Winform,WPF 通用

.NET 開源免費圖表元件庫,Winform,WPF 通用

專案背後的故事

wow, 很優秀的開源專案, 但其實我還想分享一些專案背後的故事, 因為這非常有意義!

ScottPlot 圖表庫 的作者是 Scott W Harden, 他是一名生物研究科學家, 目前在神經科學實驗室工作, 他的主要專業是分子生物學、牙科和神經科學, 但是也對計算機程式設計和電氣工程充滿熱情, 所以偶爾會編寫程式碼來完成與科學研究相關的任務。

.NET 開源免費圖表元件庫,Winform,WPF 通用

像很多科學家一樣, Scott 也使用 Python 流行的的 matplotlib 處理資料, 但是發現在給一些不太懂計算機的使用者安裝軟體時, 總會出現一些環境問題, 配置問題等等, 所以他在2017年做了個決定, 學習.NET 技術棧, 主要用來開發用於科學研究的桌面應用程式。

但是問題來了, 當他嘗試用 C# 繪製 WAV 檔案中的資料時,發現非常困難, Python 中的微不足道的任務在 C# 中似乎非常困難, 雖然有免費的圖表庫, 但是當載入了千萬級的資料時就開始有各種問題了,有一些商業圖表庫好像可以用,但既複雜又昂貴, 有些庫僅適用於 Winforms,有些僅適用於 WPF,而且許多庫具有複雜的資料物件模型,對於 .NET 新手來說非常難以理解, 於是作者就自己實現了圖表元件, 這就是 ScottPlot 初版, 然後就開源在了github, 經過幾年的逐步更新迭代, ScottPlot 變成了一個功能豐富, 成熟穩定的圖表元件庫。

另外, 作者在 2012 年被診斷出患有癌症(外周 T 細胞淋巴瘤), 然後在2018年開始接受治療,包括化療、放療和自體骨髓移植, 好訊息是, 整個手術的過程還算順利。

.NET 開源免費圖表元件庫,Winform,WPF 通用

截至到目前, 作者仍然保持著很好的狀態, 感謝作者帶來如此強大的圖表元件, 最後也祝願作者能夠越來越好, ScottPlot 也能越來越好!

https://github.com/ScottPlot/ScottPlot
https://swharden.com/

.NET 開源免費圖表元件庫,Winform,WPF 通用