ZedGraph

本博客展示了如何通过编程实现炉号与材料消耗趋势的图表可视化,包括数据筛选、图表生成及展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 数据源既拼出来的数组,X Y 轴对应数组使用List<String> 从数据源添加最后转换为数组


public partial class frmZed_1 : Form
    {

        DataGridView gridview = null;
        DateTime _date_s, _date_e;
        GraphPane myPane;
        List<string> list_Steel = null;
        List<string> List_Mat = null;
        public frmZed_1()
        {
            InitializeComponent();


        }

        public frmZed_1(DataGridView gridview, DateTime _date_s, DateTime _date_e, List<string> list_Steel,
        List<string> List_Mat )
            : this()
        {
            this.gridview = gridview;
            this._date_s = _date_s;
            this._date_e = _date_e;
            this.list_Steel = list_Steel;
            this.List_Mat = List_Mat;
        }

    

        private void frmZed_1_Load(object sender, EventArgs e)
        {

            comboBox_Mat.DataSource = List_Mat;
            comboBox_Steel.DataSource = list_Steel;
            myPane = zed.GraphPane;
            myPane.Title.Text = "消耗趋势图";
            myPane.Title.FontSpec.Size = 10;
            myPane.XAxis.Title.Text = "炉号";
            myPane.XAxis.Title.FontSpec.Size = 8;
            myPane.YAxis.Title.FontSpec.Size = 8; 
            zed.IsShowPointValues = true;
            myPane.Legend.FontSpec.Size = 5;  //显示信息大小图例
            myPane.YAxis.Title.Text="消耗量";

            myPane.XAxis.Scale.FontSpec.Angle = 90;//X轴90度
            myPane.YAxis.Scale.FontSpec.Size = 5;
            myPane.YAxis.Scale.FontSpec.Family = "Times New Roman";
            myPane.XAxis.Scale.FontSpec.Size = 5;
            myPane.XAxis.Scale.MinorStep = 1;//刻度
            CreateChat(gridview);

        }


        private void CreateChartByColumnName(DataGridView dataGridview)

        {
            if (dataGridview.DataSource == null) return;

            //生成X轴钢种坐标

            string Unit = "T";
            //if (comboBox_Mat.Text.Contains("线"))
            //{
            //    Unit = "M";
            //}
           if (comboBox_Mat.Text.Contains("电"))
            {
                Unit = "KWH";
            }
            else
            {
                Unit = "T";
            }

              myPane.YAxis.Title.Text=string.Format("消耗量({0})",Unit);
              myPane.Title.Text = string.Format("钢种{0}时间从{1}到{2}消耗趋势图", comboBox_Steel.Text, _date_s.ToString("yyyy-MM-dd HH:mm:ss"), _date_e.ToString("yyyy-MM-dd HH:mm:ss"));
            DataTable dt = dataGridview.DataSource as DataTable;

            DataView dv = new DataView(dt);


            dv.RowFilter = string.Format("钢种='{0}'", this.comboBox_Steel.Text);

            dv.Sort = "炉号 ASC";



            List<string> listlables = new List<string>(); 
            List<double> list_Y = new List<double>(); 
                
            //炼钢用铁水,
            // sum(cl."废钢铁统料") 废钢铁统料,
            // sum(cl."炼钢用铁块") 炼钢用铁块

            myPane.CurveList.Clear();
            
            foreach (DataRowView drv in dv)
            {

                listlables.Add(drv["炉号"].ToString());
                list_Y.Add((drv[comboBox_Mat.Text].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv[comboBox_Mat.Text].ToString()));
            }


            string[] labels = listlables.ToArray();

            myPane.CurveList.Clear();

            LineItem curve = myPane.AddCurve(comboBox_Mat.Text,
                null, list_Y.ToArray(), Color.Red, SymbolType.Circle);   
        
            curve.Line.Width = 1.5F;
            curve.Symbol.Fill = new Fill(Color.Red);
            curve.Symbol.Size = 2;
            curve.Line.IsSmooth = true; 
            myPane.XAxis.Type = AxisType.Text; 
            myPane.XAxis.Scale.TextLabels = labels; //设置X轴坐标
          
            zed.AxisChange();
            zed.Refresh();
        }


        #region
        /// <summary>
        ///  生成曲线图
        /// </summary>
        /// <param name="dataGridview"></param>
        private void CreateChat(DataGridView dataGridview)
        {


            //if (dataGridview.DataSource == null) return;

            //生成X轴钢种坐标


            //myPane.Title.Text = string.Format("钢种{0}当天【{1}】消耗趋势图", this.comboBox_Steel.Text, _date.ToString("yyyy年MM月dd日"));
            //DataTable dt = dataGridview.DataSource as DataTable;

     //       DataView dv = new DataView(dt);


     //       dv.RowFilter = string.Format("钢种='{0}'", this.steel);

     //       dv.Sort = "炉号 ASC";



     //       List<string> listlables = new List<string>();
     //       List<Double> list_Y_1 = new List<double>();
     //       List<Double> list_Y_2 = new List<double>();
     //       List<Double> list_Y_3 = new List<double>();

     //       //  sum(cl."铝锰铁") "铝锰铁",
     //       //sum(cl."电炉低碳锰铁") "电炉低碳锰铁",
     //       //sum(cl."低铝硅铁") "低铝硅铁",
     //       //sum(cl."高碳锰铁") "高碳锰铁",
     //       //sum(cl."锰硅合金6517") "锰硅合金6517",
     //       //sum(cl."高硅硅锰(2)") "高硅硅锰(2))",
     //       //sum(cl."钒氮合金(VN12)") "钒氮合金(VN12)", 
     //       //sum(cl."硅铁") "硅铁",
     //       //sum(cl."电炉中碳锰铁") "电炉中碳锰铁"
     //       List<Double> list_Y_4 = new List<double>();
     //       List<Double> list_Y_5 = new List<double>();
     //       List<Double> list_Y_6 = new List<double>();
     //       List<Double> list_Y_7 = new List<double>();
     //       List<Double> list_Y_8 = new List<double>();
     //       List<Double> list_Y_9 = new List<double>();
     //       List<Double> list_Y_10 = new List<double>();
     //       List<Double> list_Y_11 = new List<double>();
     //       List<Double> list_Y_12 = new List<double>();

     //       //炼钢用铁水,
     //       // sum(cl."废钢铁统料") 废钢铁统料,
     //       // sum(cl."炼钢用铁块") 炼钢用铁块
     //       foreach (DataRowView drv in dv)
     //       {

     //           listlables.Add(drv["炉号"].ToString());
     //           list_Y_1.Add((drv["炼钢用铁水"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["炼钢用铁水"].ToString()));
     //           list_Y_2.Add((drv["废钢铁统料"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["废钢铁统料"].ToString()));
     //           list_Y_3.Add((drv["炼钢用铁块"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["炼钢用铁块"].ToString()));

     //           list_Y_4.Add((drv["铝锰铁"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["铝锰铁"].ToString()));
     //           list_Y_5.Add((drv["电炉低碳锰铁"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["电炉低碳锰铁"].ToString()));
     //           list_Y_6.Add((drv["低铝硅铁"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["低铝硅铁"].ToString()));

     //           list_Y_7.Add((drv["高碳锰铁"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["高碳锰铁"].ToString()));
     //           list_Y_8.Add((drv["锰硅合金6517"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["锰硅合金6517"].ToString()));
     //           list_Y_9.Add((drv["高硅硅锰(2))"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["高硅硅锰(2))"].ToString()));

     //           list_Y_10.Add((drv["钒氮合金(VN12)"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["钒氮合金(VN12)"].ToString()));
     //           list_Y_11.Add((drv["硅铁"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["硅铁"].ToString()));
     //           list_Y_12.Add((drv["电炉中碳锰铁"].Equals(DBNull.Value)) ? 0 : Convert.ToDouble(drv["电炉中碳锰铁"].ToString()));
     //       }
     //       string[] labels = listlables.ToArray();

     //       myPane.CurveList.Clear();

     //       LineItem myCurve_1 = myPane.AddCurve("炼钢用铁水",
     //           null, list_Y_1.ToArray(), Color.Red, SymbolType.Circle);

     //       LineItem myCurve_2 = myPane.AddCurve("废钢铁统料",
     //        null, list_Y_2.ToArray(), Color.Blue, SymbolType.Circle);


     //       LineItem myCurve_3 = myPane.AddCurve("炼钢用铁块",
     //    null, list_Y_3.ToArray(), Color.Magenta, SymbolType.Circle);

     //       LineItem myCurve_4 = myPane.AddCurve("铝锰铁",
     //null, list_Y_4.ToArray(), Color.Maroon, SymbolType.Circle);


     //       LineItem myCurve_5 = myPane.AddCurve("电炉低碳锰铁",
     //null, list_Y_5.ToArray(), Color.Fuchsia, SymbolType.Circle);

     //       LineItem myCurve_6 = myPane.AddCurve("低铝硅铁",
     //null, list_Y_6.ToArray(), Color.DarkRed, SymbolType.Circle);

     //       LineItem myCurve_7 = myPane.AddCurve("高碳锰铁",
     //null, list_Y_7.ToArray(), Color.Purple, SymbolType.Circle);

     //       LineItem myCurve_8 = myPane.AddCurve("锰硅合金6517",
     //null, list_Y_8.ToArray(), Color.DarkBlue, SymbolType.Circle);

     //       LineItem myCurve_9 = myPane.AddCurve("高硅硅锰(2))",
     //null, list_Y_9.ToArray(), Color.BlueViolet, SymbolType.Circle);

     //       LineItem myCurve_10 = myPane.AddCurve("钒氮合金(VN12)",
     //null, list_Y_10.ToArray(), Color.Chocolate, SymbolType.Circle);

     //       LineItem myCurve_11 = myPane.AddCurve("硅铁",
     //null, list_Y_11.ToArray(), Color.Coral, SymbolType.Circle);


     //       LineItem myCurve_12 = myPane.AddCurve("电炉中碳锰铁",
     //null, list_Y_12.ToArray(), Color.CornflowerBlue, SymbolType.Circle);

        
     //       ;

     //       myPane.CurveList.ForEach(new Action<CurveItem>(delegate(CurveItem item)
     //       {
     //           LineItem curve = item as LineItem; curve.Line.Width = 1.5F;
     //           curve.Symbol.Fill = new Fill(Color.Red); 
     //           curve.Symbol.Size = 2;
     //           curve.Line.IsSmooth = true;
     //       }));

        
     //       myPane.XAxis.Type = AxisType.Text;
     //       //myPane.XAxis.Scale.MajorStep = 0;
     //       myPane.XAxis.Scale.TextLabels = labels;
     //       myPane.XAxis.Scale.FontSpec.Angle = 40;
     //       myPane.YAxis.Scale.FontSpec.Size = 5;
     //       myPane.XAxis.Scale.FontSpec.Size = 5;
     //       myPane.XAxis.Scale.MinorStep = 1;
     //       zed.IsShowPointValues = true;
     //       myPane.Legend.FontSpec.Size = 5;

     //       zed.AxisChange();
     //       zed.Refresh();

        }

        #endregion

     
        private void btn_Chat_Click(object sender, EventArgs e)
        {

            CreateChartByColumnName(this.gridview);
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值