MSChart的研究(轉)


轉自:http://www.cnblogs.com/Holmes-Jin/archive/2012/03/05/2380776.html

介紹MSChart的常用屬性和事件

MSChart的元素組成

最常用的屬性包括

ChartAreas:增加多個繪圖區域,每個繪圖區域包含獨立的圖表組、數據源,用於多個圖表類型在一個繪圖區不兼容時。

AlignmentOrientation:圖表區對齊方向,定義兩個繪圖區域間的對齊方式。

AlignmentStyle:圖表區對齊類型,定義圖表間用以對其的元素。

AlignWithChartArea:參照對齊的繪圖區名稱。

InnerPlotPosition:圖表在繪圖區內的位置屬性。

Auto:是否自動對齊。

Height:圖表在繪圖區內的高度(百分比,取值在0-100)

Width:圖表在繪圖區內的寬度(百分比,取值在0-100)

X,Y:圖表在繪圖區內左上角坐標

Position:繪圖區位置屬性,同InnerPlotPosition。

Name:繪圖區名稱。

Axis:坐標軸集合

Title:坐標軸標題

TitleAlignment:坐標軸標題對齊方式

Interval:軸刻度間隔大小

IntervalOffset:軸刻度偏移量大小

MinorGrid:次要輔助線

MinorTickMark:次要刻度線

MajorGrid:主要輔助線

MajorTickMark:主要刻度線

DataSourceID:MSChart的數據源。

Legends:圖例說明。

Palette:圖表外觀定義。

Series:最重要的屬性,圖表集合,就是最終看到的餅圖、柱狀圖、線圖、點圖等構成的集合;可以將多種相互兼容的類型放在一個繪圖區域內,形成復合圖。

IsValueShownAsLabel:是否顯示數據點標簽,如果為true,在圖表中顯示每一個數據值

Label:數據點標簽文本

LabelFormat:數據點標簽文本格式

LabelAngle:標簽字體角度

Name:圖表名稱

Points:數據點集合

XValueType:橫坐標軸類型

YValueType:縱坐標軸類型

XValueMember:橫坐標綁定的數據源(如果數據源為Table,則填寫橫坐標要顯示的字段名稱)

YValueMembers:縱坐標綁定的數據源(如果數據源為Table,則填寫縱坐標要顯示的字段名稱,縱坐標可以有兩個)

ChartArea:圖表所屬的繪圖區域名稱

ChartType:圖表類型(柱形、餅形、線形、點形等)

Legend:圖表使用的圖例名稱

Titles:標題集合。

width:MSChart的寬度。

height:MSChart的高度。

常用事件:

Series1.Points.DataBind() 
綁定數據點集合,如果要在一個MSChart控件的一個繪圖區(ChartArea)內添加多個不同數據源的圖表,就用這個主動綁定數據集合的方法。可以將表中指定字段的值綁定到指定的坐標軸上。

MSChart1.DataBind() 
給整個MSChart綁定一個數據源,該MSChart中的圖表全部可以使用該數據源作為統計來源。

 

下面給一個自己做的例子:

  1. int[] date = new int[] { 20, 40, 50, 80, 30, 10, 60 };  
  2.         int[] test = new int[] { 10, 80, 70, 40, 20, 50,90};  
  3.   
  4.         Chart1.Width = 600;          //圖片寬度  
  5.         Chart1.Height = 400;         //圖片高度  
  6.         Chart1.BackColor = Color.Azure;              //圖片背景色  
  7.   
  8.         //建一個圖表集合   
  9.         Series series = new Series("test");  
  10.         series.ChartType = SeriesChartType.Column;               //圖標集類型,Line為直線,SpLine為曲線  
  11.         series.Color = Color.Green;                              //線條顏色  
  12.         series.BorderWidth = 2;                                  //線條寬度  
  13.         series.ShadowOffset = 1;                                 //陰影寬度  
  14.         series.IsVisibleInLegend =false;                         //是否顯示數據說明  
  15.         series.IsValueShownAsLabel = true;  
  16.         series.MarkerStyle = MarkerStyle.Diamond;               //線條上的數據點標志類型  
  17.         series.MarkerSize = 8;                                  // 標志的大小  
  18.   
  19.         DateTime date1 = DateTime.Now.Date;  
  20.   
  21.         for (int i = 0; i < date.Length; i++)  
  22.         {  
  23.             series.Points.AddXY(date1, date[i]);  
  24.             date1 = date1.AddDays(1);  
  25.         }  
  26.         Chart1.Series.Add(series);             //把數據集添加到Chart1中  
  27.   
  28.         //再建一個圖表集合   
  29.         Series series1 = new Series("ok");  
  30.         series1.ChartType = SeriesChartType.Column;               //圖標集類型,Line為直線,SpLine為曲線  
  31.         series1.Color = Color.Red;                             //線條顏色  
  32.         series1.BorderWidth = 2;                                  //線條寬度  
  33.         series1.ShadowOffset = 1;                                 //陰影寬度  
  34.         series1.IsVisibleInLegend = false;                         //是否顯示數據說明  
  35.         series1.IsValueShownAsLabel = true;  
  36.         series1.MarkerStyle = MarkerStyle.Diamond;  
  37.         series1.MarkerSize = 8;  
  38.   
  39.         DateTime date2 = DateTime.Now.Date;  
  40.   
  41.         for (int i = 0; i < test.Length; i++)  
  42.         {  
  43.             series1.Points.AddXY(date2, test[i]);  
  44.             date2 = date2.AddDays(1);  
  45.         }  
  46.         Chart1.Series.Add(series1);             //把數據集添加到Chart1中  
  47.   
  48.         //設置坐標軸  
  49.         Chart1.ChartAreas[0].AxisX.LineColor = Color.Blue;  
  50.         Chart1.ChartAreas[0].AxisY.LineColor = Color.Blue;  
  51.         Chart1.ChartAreas[0].AxisX.LineWidth = 2;  
  52.         Chart1.ChartAreas[0].AxisY.LineWidth = 2;  
  53.         Chart1.ChartAreas[0].AxisY.Title = "總額";  
  54.         //設置網格線  
  55.         Chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Blue;  
  56.         Chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Blue;  

最后顯示的圖片:

 

數據源綁定(一),具體代碼如下:

  1. protected void Page_Load(object sender, EventArgs e)  
  2.    {  
  3.        string fileName = Server.MapPath(".");  
  4.        fileName += "//App_Data//chartdata.mdb";  
  5.   
  6.        Chart1.Width = 600;                      //圖表寬度  
  7.        Chart1.Height = 400;                     //圖表高度  
  8.        Chart1.BackColor = Color.Azure;             //圖表背景色  
  9.        Chart1.Titles.Add("房地產");                //圖表標題  
  10.      
  11.        //新建連接  
  12.        using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))  
  13.        {  
  14.            OleDbCommand cmd = new OleDbCommand("SELECT Name, Sales FROM REPS", con);  
  15.            con.Open();  
  16.            OleDbDataReader read = cmd.ExecuteReader();  
  17.            Chart1.DataBindTable(read, "Name");  
  18.            read.Close();  
  19.        }  
  20.        //注意數據綁定后,它的series是1而不是0  
  21.        Chart1.Series[1].IsValueShownAsLabel = true;             //是否顯示數據      
  22.        Chart1.Series[1].IsVisibleInLegend = false;              //是否顯示數據說明  
  23.        Chart1.Series[1].MarkerStyle = MarkerStyle.Circle;        //線條上的數據點標志類型  
  24.        Chart1.Series[1].MarkerSize = 8;                          //標志大小  
  25.   
  26.        Chart1.ChartAreas[0].AxisX.LineColor = Color.Blue;            //X軸顏色  
  27.        Chart1.ChartAreas[0].AxisY.LineColor = Color.Blue;            //Y軸顏色  
  28.        Chart1.ChartAreas[0].AxisX.LineWidth = 2;                     //X軸寬度  
  29.        Chart1.ChartAreas[0].AxisY.LineWidth = 2;                      //Y軸寬度  
  30.        Chart1.ChartAreas[0].AxisY.Title = "價格";                    //Y軸標題  
  31.   
  32.         
  33.          
  34.    }  


效果圖如下:

 

數據源綁定方式(二)

  1. protected void Page_Load(object sender, EventArgs e)  
  2.     {  
  3.         string fileName = Server.MapPath(".");  
  4.         fileName += "//App_Data//chartdata.mdb";  
  5.   
  6.         Chart1.Width = 600;                      //圖表寬度  
  7.         Chart1.Height = 400;                     //圖表高度  
  8.         Chart1.BackColor = Color.Azure;             //圖表背景色  
  9.         Chart1.Titles.Add("房地產");                //圖表標題  
  10.       
  11.         //新建連接  
  12.         using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))  
  13.         {  
  14.             OleDbCommand cmd = new OleDbCommand("SELECT Name, Sales FROM REPS", con);  
  15.             con.Open();  
  16.             //OleDbDataReader read = cmd.ExecuteReader();  
  17.             //Chart1.DataBindTable(read, "Name");  
  18.             //read.Close();  
  19.             Chart1.DataSource = cmd;  
  20.   
  21.             Chart1.Series[0].XValueMember = "Name";  
  22.             Chart1.Series[0].YValueMembers = "Sales";  
  23.             con.Close();  
  24.   
  25.             Chart1.DataBind();  
  26.         }  
  27.          
  28.     }  

效果圖如下:

 

數據源綁定(三):

  1. protected void Page_Load(object sender, EventArgs e)  
  2.    {  
  3.        string fileName = Server.MapPath(".");  
  4.        fileName += "//App_Data//chartdata.mdb";  
  5.   
  6.        Chart1.Width = 600;                      //圖表寬度  
  7.        Chart1.Height = 400;                     //圖表高度  
  8.        Chart1.BackColor = Color.Azure;             //圖表背景色  
  9.        Chart1.Titles.Add("房地產");                //圖表標題  
  10.      
  11.        //新建連接  
  12.        using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))  
  13.        {  
  14.            OleDbCommand cmd = new OleDbCommand("SELECT GrossSales FROM SALES WHERE QuarterEnding < #01/01/2002#", con);  
  15.            con.Open();  
  16.            
  17.            OleDbDataReader read = cmd.ExecuteReader();  
  18.            Chart1.Series[0].Points.DataBindY(read, "GrossSales");  
  19.            read.Close();  
  20.        }  
  21.         
  22.    }  

效果圖如下:

 

數據源綁定(四):
 

  1. protected void Page_Load(object sender, EventArgs e)  
  2.    {  
  3.        string fileName = Server.MapPath(".");  
  4.        fileName += "//App_Data//chartdata.mdb";  
  5.   
  6.        Chart1.Width = 600;                      //圖表寬度  
  7.        Chart1.Height = 400;                     //圖表高度  
  8.        Chart1.BackColor = Color.Azure;             //圖表背景色  
  9.        Chart1.Titles.Add("房地產");                //圖表標題  
  10.      
  11.        //新建連接  
  12.        using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))  
  13.        {  
  14.            OleDbCommand cmd = new OleDbCommand("SELECT * FROM REPSALES", con);  
  15.            con.Open();  
  16.            
  17.            OleDbDataReader read = cmd.ExecuteReader();  
  18.            Chart1.DataBindCrossTable(read,  
  19.                                        "Name",  
  20.                                        "Year",  
  21.                                        "Sales",  
  22.                                        "Label=Commissions{C}");  
  23.            read.Close();  
  24.        }  
  25.   
  26.       // Chart1.Legends.Add("Name");  
  27.          
  28.    }  

效果圖如下:(有點不理想,Legend中出現了Series1,關於legend的設置還有待研究)

 

數據源綁定(四)——行綁定

  1. protected void Page_Load(object sender, EventArgs e)  
  2.    {  
  3.        string fileName = Server.MapPath(".");  
  4.        fileName += "//App_Data//chartdata.mdb";  
  5.   
  6.        Chart1.Width = 600;                      //圖表寬度  
  7.        Chart1.Height = 400;                     //圖表高度  
  8.        Chart1.BackColor = Color.Azure;             //圖表背景色  
  9.        Chart1.Titles.Add("Bind By Rows");                //圖表標題  
  10.   
  11.        using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName))  
  12.        {  
  13.            OleDbCommand cmd = new OleDbCommand("SELECT * FROM SALESCOUNTS", con);  
  14.            OleDbDataAdapter oda = new OleDbDataAdapter();  
  15.            oda.SelectCommand = cmd;  
  16.            DataSet ds = new DataSet();  
  17.            oda.Fill(ds);  
  18.   
  19.            foreach (DataRow  row in ds.Tables[0].Rows)  
  20.            {  
  21.                string seriesName=row["SalesRep"].ToString();  
  22.                Chart1.Series.Add(seriesName);  
  23.                Chart1.Series[seriesName].ChartType = SeriesChartType.Line;  
  24.                Chart1.Series[seriesName].BorderWidth = 2;  
  25.                for (int col = 1; col < ds.Tables[0].Columns.Count; col++)  
  26.                {  
  27.                    string colName = ds.Tables[0].Columns[col].ColumnName;  
  28.                    int yVal = Convert.ToInt32(row[colName].ToString());  
  29.   
  30.                    Chart1.Series[seriesName].Points.AddXY(colName, yVal);  
  31.                }  
  32.            }  
  33.              
  34.        }  
  35.    }  

效果圖如下:

 

數據源綁定(五)

  1. protected void Page_Load(object sender, EventArgs e)  
  2.    {  
  3.        // Initialize arrays for series 1  
  4.        double[] yval1 = { 2, 6, 5 };  
  5.        string[] xval1 = { "Peter", "Andrew", "Julie" };  
  6.   
  7.        // Initialize arrays for series 2  
  8.        double[] yval2 = { 4, 5, 3 };  
  9.        string[] xval2 = { "Peter", "Andrew", "Dave" };  
  10.   
  11.        // Initialize arrays for series 3  
  12.        double[] yval3 = { 6, 5 };  
  13.        string[] xval3 = { "Julie", "Mary" };  
  14.   
  15.        // Bind the arrays to each data series  
  16.        Chart1.Series["Series1"].Points.DataBindXY(xval1, yval1);  
  17.        Chart1.Series["Series2"].Points.DataBindXY(xval2, yval2);  
  18.        Chart1.Series["Series3"].Points.DataBindXY(xval3, yval3);  
  19.   
  20.        // Align series using their X axis labels  
  21.        Chart1.AlignDataPointsByAxisLabel();  
  22.        Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;   //展示3D  
  23.          
  24.   
  25.    }  

效果圖如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM