clq

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

改 Legend 属性就可以了,只要简单加一个 item 就行了.

坐标则是 ChartArea 控制

都好难找.

--------------------------------------------------

http://www.dotblogs.com.tw/joo3360/archive/2010/10/05/18127.aspx

MS Chart 針對多個Series以及自訂X軸Group樣式

這次接到客戶要求說,要顯示各機台狀況以及顯示機台與站點間X軸Group的顯示,而每個機台又必須區分顏色出來。

沒寫過,所以研究了一下MS Chart如何運用。

然後發現ChartType必須使用SeriesChartType.StackedColumn,才能達到一個X軸刻度來重疊Series來顯示(這個我找好久,果然不熟MS Chart,物件太多了)

下圖是這次運用到作法Sample Chart。

image 

Step.1 必須先動態建立好Series至Chart物件中

01 //先動態產生Series
02 for (int i = 0; i < 8; i++)
03 {
04     Series series = new Series("DATA" + i.ToString());
05     series.Color = Color.FromArgb(rnd.Next() % (255 - 0 + 1) + 0,
06         rnd.Next() % (255 - 0 + 1) + 0,
07         rnd.Next() % (255 - 0 + 1) + 0); //亂數定義Series顏色
08  
09     series.ChartType = SeriesChartType.StackedColumn;
10     this.Chart1.Series.Add(series);
11 }

Step.2 再將各個Series加入資訊。

*注意:因為假設一筆資料都要區分不同顏色必須各自填入各自的Series。

01 //填入Series資訊       
02         for (int i = 0; i < Chart1.Series.Count; i++)
03         {
04             for (int j = 0; j < Chart1.Series.Count; j++)
05             {
06                 if (i == j)
07                 {
08                     Chart1.Series[i].Points.AddXY(i.ToString(), i * 5);
09                 }
10                 else
11                 {
12                     Chart1.Series[i].Points.AddY(0); //如果不要產生該Point資訊時,就先資訊設為0
13                 }
14             }
15         }

Step.3 再動態加作客製化的X軸。

 

 

1 //X軸作Group設定
2         Chart1.ChartAreas[0].AxisX.CustomLabels.Add(0.5, 4.5, "A", 1, LabelMarkStyle.LineSideMark);
3         Chart1.ChartAreas[0].AxisX.CustomLabels.Add(4.5, 8.5, "B", 1, LabelMarkStyle.LineSideMark);

 

 

Step.4 加入Legend,顯示右方Series資訊列

 

1 //設定Legend
2         Legend legend = new Legend("TEST Legend");
3         legend.Docking = Docking.Right;
4         legend.Alignment = System.Drawing.StringAlignment.Center;
5         Chart1.Legends.Add(legend);

 

 

以上就完成上列Sample Chart

posted on 2012-02-09 17:11  clq  阅读(839)  评论(0编辑  收藏  举报