C# 畫圖表套件ZedGraph

  • 12503
  • 0
  • C#
  • 2012-03-29

DataTable轉Array,使用套件畫圖。

相關介紹網頁 http://www.codeproject.com/Articles/5431/A-flexible-charting-library-for-NET

作品圖

        private void Form1_Load(object sender, EventArgs e)
        {
            zedGraphControl1.GraphPane.Title.Text = "Title"; //圖表的表頭
            zedGraphControl1.GraphPane.XAxis.Title.Text = " "; //X軸的名稱
            zedGraphControl1.GraphPane.YAxis.Title.Text = " "; //Y軸的名稱

            #region 準備預設顯示資料
            DataSet ds = new DataSet();
            DataTable dt = new DataTable("matr");
            dt.Columns.Add("id", typeof(string)).ReadOnly = true;
            dt.Columns.Add("val", typeof(string));
            dt.Columns["id"].AutoIncrement = true;

            DataRow dr1 = dt.NewRow();
            dr1["id"] = "2001";
            dr1["val"] = "5";
            dt.Rows.Add(dr1);

            DataRow dr2 = dt.NewRow();
            dr2["id"] = "2002";
            dr2["val"] = "3";
            dt.Rows.Add(dr2);

            DataRow dr3 = dt.NewRow();
            dr3["id"] = "2003";
            dr3["val"] = "9";
            dt.Rows.Add(dr3);

            DataRow dr4 = dt.NewRow();
            dr4["id"] = "2007";
            dr4["val"] = "7";
            dt.Rows.Add(dr4);

            ds.Tables.Add(dt);
            BindingSource bs = new BindingSource(ds, "matr");

            ds.Tables["matr"].Rows[2]["val"] = "6"; //改值

            dataGridView.DataSource = bs;

            #endregion

            #region DataTable轉Array

            GraphPane myPane = zedGraphControl1.GraphPane;
            zedGraphControl1.GraphPane.CurveList.Clear(); //把舊的圖資清掉

            int i = ds.Tables["matr"].Rows.Count;
            string[] xTitle = new string[i];
            double[] Aval = new double[i];
            for (int k = 0; k < i; k++)
            {
                xTitle[k] = Convert.ToString(ds.Tables["matr"].Rows[k]["id"]);
                Aval[k] = Convert.ToDouble(ds.Tables["matr"].Rows[k]["val"]);
            }
            #endregion

            LineItem myCurve;

            #region 折線圖
            myCurve = myPane.AddCurve("", null, Aval, Color.Purple);
            //myCurve.Line.Fill = new Fill(Color.Purple, Color.White, Color.Purple);
            #endregion

            // 開始X軸坐標設置 
            myPane.XAxis.Scale.TextLabels = xTitle;
            myPane.XAxis.Type = AxisType.Text;

            // 設置Y軸坐標的範圍
            myPane.YAxis.Scale.Min = 0;
            myPane.YAxis.Scale.Max = 10;
            myPane.YAxis.Scale.MajorStep = 1;

            //底圖色
            myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(255, 255, 166), 90F);
            myPane.Fill = new Fill(Color.FromArgb(250, 250, 255));

            zedGraphControl1.AxisChange();
            zedGraphControl1.Refresh();
        }