C#科學(xué)繪圖之使用scottPlot繪制多個(gè)圖像
示例
從名字就能看出,ScottPlot的繪圖函數(shù)AddScatter的作用是為圖窗添加數(shù)據(jù)點(diǎn),換言之,每調(diào)用一次AddScatter,就可以在圖窗中添加一組圖像。下面添加兩個(gè)按鈕,分別用于繪制正弦和余弦圖像,其正弦按鈕的響應(yīng)函數(shù)如下
ScatterPlot sinPlot; private void btnSin_Click(object sender, RoutedEventArgs e) { var xs = Enumerable.Range(0, 1000).Select(x => x / 100.0).ToArray(); var ys = xs.Select(x => Math.Sin(x)).ToArray(); sinPlot = plt.Plot.AddScatter(xs, ys); plt.Refresh(); }
其中,sinPlot被設(shè)為全局變量,目的是方便后續(xù)用其他按鈕來操縱函數(shù)圖像。余弦圖像的相應(yīng)函數(shù)如出一轍,只需把變量名以及y s ysys的生成過程更改一下,效果如下
移除圖像
移除圖像,只需調(diào)用Remove函數(shù),以移除正弦函數(shù)為例,其相應(yīng)動(dòng)作如下
private void btnRmSin_Click(object sender, RoutedEventArgs e) { plt.Plot.Remove(sinPlot); plt.Refresh(); }
下面演示一下移除圖像的效果,順便參悟一下彈出窗口的邏輯,所謂彈出窗口,就是把當(dāng)前圖窗中的圖形作為一個(gè)對象復(fù)制一份,然后這個(gè)對象將與舊圖窗變成陌生人,互不相干。
圖例
若想在圖窗中對兩個(gè)圖像做區(qū)分,就需要指明圖像的Label,仍以正弦函數(shù)為例,修改繪制按鈕的點(diǎn)擊函數(shù),當(dāng)然余弦函數(shù)也做相似處理。
private void btnSin_Click(object sender, RoutedEventArgs e) { var xs = Enumerable.Range(0, 100).Select(x => x / 10.0).ToArray(); var ys = xs.Select(x => Math.Sin(x)).ToArray(); sinPlot = plt.Plot.AddScatter(xs, ys,label:"sin"); plt.Plot.Legend(); plt.Refresh(); }
由于前面1000 10001000個(gè)點(diǎn)的繪制效果不太好看,所以上面代碼把點(diǎn)數(shù)控制在100個(gè),繪制結(jié)果如下
信號圖
Scott支持把不同類型的圖像在一個(gè)圖窗中繪制,例如可以同時(shí)繪制散點(diǎn)圖和信號圖,示例如下
SignalPlot sigPlot; private void btnSignal_Click(object sender, RoutedEventArgs e) { double[] values = DataGen.RandomWalk(1_000_000, 0.003, 0.5); sigPlot = plt.Plot.AddSignal(values, sampleRate: 48_000); plt.Refresh(); }
這個(gè)圖像和前面的sinPlot,cosPlot連數(shù)據(jù)類型都是不一致的,不過很顯然二者有相同的父類。下面是其繪圖結(jié)果
到此這篇關(guān)于C#科學(xué)繪圖之使用scottPlot繪制多個(gè)圖像的文章就介紹到這了,更多相關(guān)C# scottPlot繪制多個(gè)圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c# WinForm 窗體之間傳值的幾種方式(小結(jié))
這篇文章主要介紹了WinForm 窗體之間傳值的幾種方式(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09C# XML字符串包含特殊字符的處理轉(zhuǎn)換方法小結(jié)
今天用C#輸出XML文件時(shí),發(fā)現(xiàn)報(bào)錯(cuò),經(jīng)過反復(fù)檢查調(diào)試,發(fā)現(xiàn)是因?yàn)槟程巸?nèi)容含有某些特殊字符,這些特殊字符是在XML里不被允許的2020-07-07C#把EXCEL數(shù)據(jù)轉(zhuǎn)換成DataTable
這篇文章介紹了C#把EXCEL數(shù)據(jù)轉(zhuǎn)換成DataTable的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04C#中實(shí)現(xiàn)插入、刪除Excel分頁符的方法
這篇文章主要給大家介紹了關(guān)于在C#中實(shí)現(xiàn)插入、刪除Excel分頁符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05