大家好, 我是等天黑, 今天給大家介紹一個功能完善, 效能強悍的圖表元件庫 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
- 通過Nuget安裝
ScottPlot.WinForms
。 - 安裝完成後, 就可以在工具箱找到 ScottPlot 元件, 然後拖到 Winform 窗體上。
- 填充圖表資料, 完成!
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
- 通過Nuget安裝
ScottPlot.WPF
- 新增一個 WpfPlot 元件到佈局中, 並設定Name
<WpfPlot Name="WpfPlot1" />
- 同樣, 填充圖表資料, 完成!
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
當然也可以在控制檯應用中使用該圖表元件, 和上面不同的是, 它會渲染成一張圖片, 然後可以儲存到本地
- 通過Nuget安裝
ScottPlot
- 填充圖表資料並儲存為圖片
圖表示例
專案背後的故事
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/