MS Chart 介紹與應用(二) - 範例快速導引

本文將說明微軟提供的圖表解決方案【Microsoft Chart Controls】,最基本最實用的快速觀念導引。

前言

整個圖表的使用與設定方式,基本上已經在微軟釋出的範例專案中( Samples Environments for Microsoft Chart Controls ),有明確的說明與解釋了。但若從頭開始看到尾,對於剛接觸使用並且可能英文沒那麼好的我(像是我),這樣的學習效率可能不太好。因此將稍微說明範例程式的重點,讓其從教科書變成工具書,從工具書變成備忘錄筆記,節省下來的時間便可放在更重要的事情上面。

 

準備項目

Microsoft Visual Studio (2008版本以上)

Samples Environments for Microsoft Chart Controls ( C#->Win Form ; HTML -> Web Form)【沒有前端分離樣板,別想了。不過可以將圖表輸出成binary,變成後端輸出圖片】

 

啟動專案

將下載好的任一專案打開並且動就可以開始了。(若Win Form專案執行時發生找不到【vbnet_langDef.xml】、【cs_langDef.xml】、【data】或【Images】,可以往下一層的目錄【C#】尋找,並搬移到程式需讀取的位置。 )

啟動後預設會顯示的是【Overview】的頁面,但請跳過他。我們要看的第一張頁面是【Chart Elements Overview】

PS:往後若對於MS Chart的設定突然沒概念時,回過頭看這張說明會很有幫助的。(該圖片可以從專案檔中找到,位置是 ~/GettingStarted/ChartElements/ChartElementsFinished.png)

基本上Chart的結構,大底下如下所述(剩餘項目請有需要時翻文件與程式碼)

-Chart ( 元件 ,不翻譯是因為避免與下面敘述搞混)
--Series(圖表中的資料序列群組)

---ChartType(資料於圖表中呈現的類別,圓餅,長條,直線...blablabla)

---Legend(綁定Legends中項目的設定,基本上就是設定Legend分組用的)

---ChartArea(決定該資料出現在哪個一個圖表顯示區塊,PS:不同群組的資料可以放於同一圖表中並列比較)

--ChartAreas(圖表顯示區塊,一個Chart可以有多個圖表)

---AxisX(各點於X軸上的名稱,位於圖表下方)

---AxisX2(各點於X軸上的名稱,位於圖表上方)

---AxisY(各點於X軸上的名稱,位於圖表左方)

---AxisY2(各點於X軸上的名稱,位於圖表右方)

--Legends(一個Legend屬於一個群組,很多的Legend代表可以有很多群組)
--Titles(可以放很多標題,分別在不同位置)

 

實際動手做做看

一個最簡單的圖表如下圖,僅僅設定了一組XY序列的座標

如果今天有另一組的XY序列座標需要進行比對,便是於Series中增加一個項目即可。

如果說今天老闆說覺得圖表都是一樣的很無聊,應該要來點線條才好看,那也可以透過改變資料呈現的類別來達成(ChartType)

PS:部分類型是會有限定的搭配設定的,像是圓餅圖就不能與長條圖放在一起。(但可以透過不同顯示區域疊加的設定來達成顯示的效果)

然而當資料一複雜時,勢必圖表的顯示區域就要做一些調整,此時就是ChartAreas增加一個項目,並且將資料設定進去。

接著可能小姐/小哥說圖表沒名稱,一忙時會看不懂,所以要加上識別名稱,恩......。

最後當資料須要進一步識別與分組時,則可以設定Legends中的項目,與Series中每一組序列座標的Legend對應。

 

開發/學習建議

由於該元件算是非常靈活,因此剛接觸時設定相對陌生是正常的,因此建議根據需求檢視範例的【Chart Types】頁籤找到相似的產出圖形,進一步檢視程式碼的設定是相對容易的。

而進一步對於各個元素的設定則可以在【Chart Features】頁籤中找到。

至於要抓取到範例的程式碼的位置也可直接透過Visual Studio的篩選器直接找到,可以說是非常方便。

 

 

 

 

 

 

 

 

 

 

後語

1.其實有範例程式,誰還需要這篇文章(汗)。

2.由於實務上不太會一個專案出現太多種類的圖表,因此為了開發與維護的方便,會建議另外多封裝一層,主體邏輯位置僅負責餵資料或簡易設定,達到關注點分離與邏輯共用的目的。(不然每一個頁面都要重頭寫一次Chart設定,不僅開發人員會瘋掉,後續維護人員也會瘋掉的)