zoukankan      html  css  js  c++  java
  • 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.    }  

    效果图如下:

  • 相关阅读:
    Docker 安装 MySQL
    Docker安装
    Thymeleaf语法总结
    SpringBoot总结之事务和AOP
    SpringBoot总结之Spring Data Jpa
    SpringBoot总结之属性配置
    Spring总结之SpringMvc下
    Spring总结之SpringMvc上
    Spring总结之事务
    在什么情况下使用@ResponseBody 注解?
  • 原文地址:https://www.cnblogs.com/qianxiaojinnian/p/4688262.html
Copyright © 2011-2022 走看看