C# Chart使用总结 1 ---------关于图表数据的来源

关于图表数据的来源:

1、通过XValueMember YValueMembers 设置

 
OleDbConnection conn = new OleDbConnection(connStr);
            OleDbCommand comm = new OleDbCommand();

            string sqlstr = "select * from OriginalData order by ID";
            OleDbDataAdapter myda ;
            DataSet myds= new System.Data.DataSet();

            
            try
            {
                conn.Open();
                myda = new OleDbDataAdapter(sqlstr, conn);
                //myds = new System.Data.DataSet();
                myda.Fill(myds, "OriginalData");


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();
 
            }

            chart1.DataSource = myds.Tables["OriginalData"];
            chart1.Series[0].XValueMember = "PositionV";
            chart1.Series[0].YValueMembers = "LoadV";
            //chart1.Series[0].XValueType = ChartValueType.Date;

            //chart1.Series[0].Label = "#VAL";  //显示对应点的值
            chart1.Series[0].ToolTip = "#VALX : #VAL";  //鼠标在曲线图上时  显示对应点的值
            chart1.Series[0].ChartType = SeriesChartType.Line;

  2、用新定义的DataTable类型的dt来绑定

       DataTable dt = new System.Data.DataTable();

            AccessHelper  ach= new AccessHelper(fileName);
            string sqlstr = "select LoadValue ,PositionValue  from OriginalData order by ID";
            dt = ach.GetDataTableFromDB(sqlstr);
            chart1.DataSource = dt;
            
            chart1.Series[0].XValueMember = dt.Columns[0].ColumnName;

            chart1.Series[0].YValueMembers = dt.Columns[1].ColumnName;

            chart1.Series[0].ChartType = SeriesChartType.Line;

            ach.ClostConn();

  3、用类似chart1.Series[0].Points.DataBindXY(iXAxis,fTargetOT);中的DataBindXY(X,Y)来绑定数据。。其中,X是一个数组,Y也是数组,在绑定之前需要对数组中的每个元素赋值

DataTable dt = new System.Data.DataTable();

            AccessHelper ach = new AccessHelper(fileName);
            string sqlstr = "select LoadV ,PositionV  from OriginalData order by ID";
            dt = ach.GetDataTableFromDB(sqlstr);
            ////chart1.DataSource = dt;

            ////chart1.Series[0].XValueMember = dt.Columns[0].ColumnName;

            ////chart1.Series[0].YValueMembers = dt.Columns[1].ColumnName;
            ////chart1.Series[0].ChartType = SeriesChartType.Line;
            int count = dt.Rows.Count;
            if (count == 0)
            {
                return;
            }
            double[] loadValueArray = new double[count];
            double[] posArray= new double[count];
            for (int i = 0; i < count; i++)
            {
                loadValueArray[i] = Convert.ToDouble(dt.Rows[i][0].ToString());
                posArray[i] = Convert.ToDouble(dt.Rows[i][1].ToString());

            }
            chart1.Series[0].Points .DataBindXY(loadValueArray,posArray);

  此种方式,适合,读过来的数据需要进行处理的情况,如果不需要处理,而且列特别多,则不建议使用这种方式,用方式二比较方便。

4、来自单独的数据,动态添加序列  通过定时器 实时调用

chart3.Series.Clear();

Series seriesDownTime =newSeries("DownTime");//此时就添加一个序列,chart3.Series[0]

seriesDownTime.ChartType =SeriesChartType.Column;

//比如要添加的内容放在了数组X和数组Y中,则添加第一个值可以如下添加:

扫描二维码关注公众号,回复: 2236926 查看本文章

seriesDownTime.Points.AddXY(X[n],Y[n]);

下一个值与之类似,直到把很少的几个点添加完成即可。。。

此种方式适合要显示在图表上的只有少量的几个点,如果数据众多,建议按集合来添加。

猜你喜欢

转载自www.cnblogs.com/rosesmall/p/9334008.html