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

SpringLeee發表於2021-11-26

大家好, 我是等天黑, 今天給大家介紹一個功能完善, 效能強悍的圖表元件庫 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年, 不存在版權和收費問題
  • 元件豐富:圖表元件非常全面,可滿足各種場景下的展示需求。

圖表接入

⚡ 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();

⚡ 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();

⚡ Console App

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

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

圖表示例

專案背後的故事

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

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

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

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

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

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

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

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

相關文章