小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

[轉(zhuǎn)載]技術(shù)宅:VB.net Chart控件繪制數(shù)據(jù)圖表

 郗peng 2021-08-03
用VB.net編程序的時(shí)候,繪制數(shù)據(jù)圖表一直是一個(gè)令人頭疼的事情。用graphics方法一條一條線的畫(huà),程序極其繁瑣,光是坐標(biāo)變換就搞死人了。當(dāng)然,輸出一些比較特殊的圖形的時(shí)候這是唯一的方法,但是如果只想要畫(huà)個(gè)直方圖或者折線圖什么的真是殺雞用牛刀。

貌似在VB6時(shí)代就出現(xiàn)了MSChart控件,利用Excel的內(nèi)核來(lái)繪制簡(jiǎn)單的統(tǒng)計(jì)圖。記得當(dāng)年好像必須要綁定數(shù)據(jù)控件,從SQL或者Access中綁定數(shù)據(jù),麻煩無(wú)比,從來(lái)沒(méi)搞明白過(guò)。到了.net framework 4.0時(shí)代(VB.net 2010),這個(gè)控件直接集成進(jìn)來(lái)了,稱(chēng)為Chart控件,據(jù)說(shuō)方便了很多,可以直接用程序往里面很方便地加數(shù)據(jù)點(diǎn)。網(wǎng)上的各種教程相當(dāng)?shù)纳?,因此自己參照了許多教程來(lái)編了個(gè)簡(jiǎn)單的程序。在這里總結(jié)一下學(xué)習(xí)心得。

首先,就是在窗體上加一個(gè)Chart控件:
[轉(zhuǎn)載]技術(shù)宅:VB.net <wbr>Chart控件繪制數(shù)據(jù)圖表

在窗體上調(diào)整其大小,默認(rèn)就已經(jīng)有一個(gè)柱狀圖了:
[轉(zhuǎn)載]技術(shù)宅:VB.net <wbr>Chart控件繪制數(shù)據(jù)圖表

在這個(gè)控件內(nèi),分為幾個(gè)層次:
一個(gè)Chart控件內(nèi)可以包含若干個(gè)ChartArea,每個(gè)ChartArea相當(dāng)于一個(gè)圖、一個(gè)坐標(biāo)軸(類(lèi)似MATLAB里面的subplot的概念)
一個(gè)ChartArea里面有若干個(gè)Series,就是數(shù)據(jù)系列(套用Excel里面的概念),例如一組直方圖的數(shù)據(jù)就是一個(gè)Series,一條折線數(shù)據(jù)也是一個(gè)Series
下圖可以說(shuō)明這種包含關(guān)系:
[轉(zhuǎn)載]技術(shù)宅:VB.net <wbr>Chart控件繪制數(shù)據(jù)圖表

上圖中所有的東西都是可以設(shè)置的,因此全部命令巨復(fù)雜無(wú)比,但知道了各種對(duì)象的包含關(guān)系,就可以很容易地在幫助里面找到了。

這里是一個(gè)簡(jiǎn)單的示例:http://jzcqx.blog.163.com/blog/static/31170512009813017295/

下面以我編的一段程序來(lái)說(shuō)明:
            '繪制柱形圖
            Chart1.ChartAreas.Clear()
            Dim ChartAreas1 As New ChartArea("Read length")    '定義新的ChartArea
            Chart1.ChartAreas.Add(ChartAreas1)                 '將新定義的ChartArea加入Chart1
            Chart1.ChartAreas(0).AxisX.Title = "Length (nt)"   '設(shè)置ChartArea里坐標(biāo)軸標(biāo)題
            Chart1.ChartAreas(0).AxisY.Title = "Read count"

            Chart1.Series.Clear()
            Dim series1 As New Series("Read Count")
            series1.ChartType = SeriesChartType.Column         '設(shè)置Series的繪圖類(lèi)型
            Chart1.Series.Add(series1)

            For i = minlen To maxlen
                Chart1.Series("Read Count").Points.AddXY(i, l(i))    '為這個(gè)Series加數(shù)據(jù)點(diǎn)
            Next
            Chart1.Legends(0).Docking = Docking.Top              '調(diào)整圖例的位置

輸出結(jié)果:
[轉(zhuǎn)載]技術(shù)宅:VB.net <wbr>Chart控件繪制數(shù)據(jù)圖表

很簡(jiǎn)單,也很樸實(shí),但讓人看著也算心曠神怡和一目了然,最重要的是避免了寫(xiě)大量代碼用于坑爹的坐標(biāo)變換和坐標(biāo)軸自適應(yīng)。

下面再來(lái)說(shuō)說(shuō)如何將繪制的數(shù)據(jù)圖表保存起來(lái)。Chart對(duì)象有一個(gè)方法叫SaveImage,直接就能將圖表存為BMP,JPG,PNG,TIF等位圖格式,更重要的是還能直接存成EMF格式的矢量圖!這樣就不怕后期放大了。
命令嘛,很簡(jiǎn)單:
Chart1.SaveImage(SaveFileDialog1.FileName, ChartImageFormat.Png)


當(dāng)然,真要輸出很精美的圖表,還是建議把數(shù)據(jù)輸出到Excel或者M(jìn)ATLAB里面去慢慢調(diào)整。VB.NET里面隨便畫(huà)一下,只不過(guò)是為了方便分析數(shù)據(jù)時(shí)簡(jiǎn)單直觀地預(yù)覽數(shù)據(jù)分布而已。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多