Пример #1
0
        private void ChartInit()
        {
            //#region Title

            //ChartTitle chartTitle = new ChartTitle();
            ////标题内容
            //chartTitle.Text = "大盘5分钟走势预测";
            ////字体颜色
            //chartTitle.TextColor = Color.White;
            ////字体类型字号
            //chartTitle.Font = new Font("新宋体", 11, FontStyle.Bold);
            ////标题对齐方式
            //chartTitle.Dock = ChartTitleDockStyle.Top;
            //chartTitle.Alignment = StringAlignment.Near;

            //chartControl1.Titles.Clear();
            //chartControl1.Titles.Add(chartTitle);
            //#endregion

            #region Series

            _seCurrent = new Series(DateTime.Now.ToShortDateString(), ViewType.Line);
            _seCurrent.ArgumentScaleType        = ScaleType.Qualitative;
            _seCurrent.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.False;
            LineSeriesView myView1 = (LineSeriesView)_seCurrent.View;
            myView1.Color = Color.DeepSkyBlue;

            _seCorrected = new Series("当日修正值", ViewType.Spline);
            _seCorrected.ArgumentScaleType        = ScaleType.Qualitative;
            _seCorrected.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.False;
            SplineSeriesView myView2 = (SplineSeriesView)_seCorrected.View;
            myView2.Color = Color.OrangeRed;

            this.chartControl1.Series.Add(_seCurrent);
            this.chartControl1.Series.Add(_seCorrected);

            #endregion Series

            #region XYDiagram

            XYDiagram myDiagram = chartControl1.Diagram as XYDiagram;

            #endregion XYDiagram

            #region AxisX

            AxisX myAxisX = myDiagram.AxisX;

            myAxisX.Label.Font                 = new Font("Tahoma ", 8, FontStyle.Bold);
            myAxisX.Label.Staggered            = false;
            myAxisX.Label.Angle                = -90;
            myAxisX.Label.EnableAntialiasing   = DevExpress.Utils.DefaultBoolean.True;
            myAxisX.Tickmarks.MinorVisible     = false;
            myAxisX.WholeRange.Auto            = true;
            myAxisX.WholeRange.AutoSideMargins = true;

            #endregion AxisX

            #region AxisY

            AxisY myAxisY = myDiagram.AxisY;
            myAxisY.Label.Font        = new Font("Tahoma ", 8, FontStyle.Bold);
            myAxisY.Label.TextPattern = "{ V:F2}";
            //myAxisY.GridLines.Color = Color.FromArgb(165, 42, 42);
            //myAxisY.GridLines.LineStyle.Thickness = 1;
            //myAxisY.GridLines.LineStyle.DashStyle = DevExpress.XtraCharts.DashStyle.Dot;
            myAxisY.Tickmarks.MinorVisible = false;
            myAxisY.WholeRange.Auto        = true;

            #endregion AxisY
        }
Пример #2
0
        private void BindChart()
        {
            ConnDB conn = new ConnDB();
            string strsql, strsql2, month;
            int    deptid;

            deptid = (int)comboBoxDept.SelectedValue;
            List <Series> myseries = new List <Series>();

            month = dateTimePicker1.Text.ToString();
            if (deptid == 0)
            {
                strsql  = "select SALE_TYPE_NAME 营业类型,dept_name 部门,Cdate 日期,DIRECT_HOURS 直接人工小时数,cast(round(DIRECT_COST,2) as decimal(18,2)) 直接人工成本,INDIRECT_HOURS 间接人工小时数,cast(round(INDIRECT_COST,2) as decimal(18,2)) 间接人工成本,cast(round(POINTCOUNT,2) as decimal(18,2)) 点数,cast(round(COST,2) as decimal(18,2)) 预估成本,COST_POINT 预估单点成本,STANDARD_POINT 标准单点成本,cast(round(isnull(STANDARD_COST,0),2) as decimal(18,2)) 标准成本,cast(round(PROFIT,2) as decimal(18,2)) 盈亏 from COST_DEPT_CALCULATE where cdate like '" + month + "%' and sale_type_id =2";
                strsql2 = "select distinct dept_name 部门 from COST_DEPT_CALCULATE where cdate like '" + month + "%' and sale_type_id =2";
            }
            else
            {
                strsql  = "select SALE_TYPE_NAME 营业类型,dept_name 部门,Cdate 日期,DIRECT_HOURS 直接人工小时数,cast(round(DIRECT_COST,2) as decimal(18,2)) 直接人工成本,INDIRECT_HOURS 间接人工小时数,cast(round(INDIRECT_COST,2) as decimal(18,2)) 间接人工成本,cast(round(POINTCOUNT,2) as decimal(18,2)) 点数,cast(round(COST,2) as decimal(18,2)) 预估成本,COST_POINT 预估单点成本,STANDARD_POINT 标准单点成本,cast(round(isnull(STANDARD_COST,0),2) as decimal(18,2)) 标准成本,cast(round(PROFIT,2) as decimal(18,2)) 盈亏 from COST_DEPT_CALCULATE where cdate like '" + month + "%' and sale_type_id =2 and dept_id =" + deptid;
                strsql2 = "select distinct dept_name 部门 from COST_DEPT_CALCULATE where cdate like '" + month + "%' and sale_type_id =2 and dept_id = " + deptid;
            }

            DataSet   ds  = conn.ReturnDataSet(strsql);
            DataTable dt  = ds.Tables[0];
            DataSet   ds2 = conn.ReturnDataSet(strsql2);

            XYDiagram dg = (XYDiagram)chartControlDeptDay.Diagram;

            if (dg != null)
            {
                dg.Panes.Clear();
            }

            chartControlDeptDay.Series.Clear();
            chartControlDeptDay.Annotations.Clear();
            chartControlDeptDay.DataSource = dt;



            for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
            {
                //预估成本
                myseries.Add(new Series(ds2.Tables[0].Rows[i][0].ToString() + "预估成本", DevExpress.XtraCharts.ViewType.Spline));
                myseries[i * 2].ArgumentDataMember           = dt.Columns["日期"].ToString();
                myseries[i * 2].ValueDataMembersSerializable = dt.Columns["预估成本"].ToString();
                chartControlDeptDay.Series.Add(myseries[i * 2]);
                //标准成本
                myseries.Add(new Series(ds2.Tables[0].Rows[i][0].ToString() + "标准成本", DevExpress.XtraCharts.ViewType.Spline));
                myseries[i * 2 + 1].ArgumentDataMember           = dt.Columns["日期"].ToString();
                myseries[i * 2 + 1].ValueDataMembersSerializable = dt.Columns["标准成本"].ToString();
                chartControlDeptDay.Series.Add(myseries[i * 2 + 1]);
                //设置过滤
                DataFilter df = new DataFilter("部门", "System.String", DataFilterCondition.Equal, ds2.Tables[0].Rows[i][0].ToString());
                //series1.DataFiltersConjunctionMode = ConjunctionTypes.Or;
                myseries[i * 2].DataFilters.Clear();
                myseries[i * 2].DataFilters.AddRange(new DataFilter[] { df });
                myseries[i * 2 + 1].DataFilters.Clear();
                myseries[i * 2 + 1].DataFilters.AddRange(new DataFilter[] { df });
                //设置pane
                XYDiagram diagram = (XYDiagram)chartControlDeptDay.Diagram;
                if (i > 0)
                {
                    //// Add secondary axes to the diagram, and adjust their options.
                    //diagram.SecondaryAxesX.Add(new SecondaryAxisX(Convert.ToString(i - 1)));
                    //diagram.SecondaryAxesY.Add(new SecondaryAxisY(Convert.ToString(i - 1)));
                    //diagram.SecondaryAxesX[i - 1].Alignment = AxisAlignment.Near;
                    //diagram.SecondaryAxesY[i - 1].Alignment = AxisAlignment.Near;

                    //diagram.Panes[ds2.Tables[0].Rows[i][0].ToString()]
                    diagram.Panes.Add(new XYDiagramPane(ds2.Tables[0].Rows[i][0].ToString()));
                    SplineSeriesView myView1 = (SplineSeriesView)myseries[i * 2].View;
                    //myView1.AxisX = diagram.SecondaryAxesX[i - 1];
                    //myView1.AxisY = diagram.SecondaryAxesY[i - 1];
                    myView1.Pane = diagram.Panes[i - 1];
                    SplineSeriesView myView2 = (SplineSeriesView)myseries[i * 2 + 1].View;
                    //myView2.AxisX = diagram.SecondaryAxesX[i - 1];
                    //myView2.AxisY = diagram.SecondaryAxesY[i - 1];
                    myView2.Pane = diagram.Panes[i - 1];

                    chartControlDeptDay.Annotations.AddTextAnnotation(Convert.ToString(i));
                    XYDiagramPaneBase myPane = diagram.Panes[i - 1];
                    ((FreePosition)chartControlDeptDay.Annotations[i].ShapePosition).DockTarget = diagram.Panes[i - 1];
                    ((FreePosition)chartControlDeptDay.Annotations[i].ShapePosition).DockCorner = DockCorner.LeftTop;
                    TextAnnotation myTextAnnotation = (TextAnnotation)chartControlDeptDay.AnnotationRepository.GetElementByName(Convert.ToString(i));
                    //myTextAnnotation.Text = "<color=red>" + ds2.Tables[0].Rows[i][0].ToString() + " </color>";
                    myTextAnnotation.Text           = ds2.Tables[0].Rows[i][0].ToString();
                    myTextAnnotation.ShapeKind      = ShapeKind.Rectangle;
                    myTextAnnotation.ConnectorStyle = AnnotationConnectorStyle.None;
                }
                else
                {
                    chartControlDeptDay.Annotations.AddTextAnnotation("Annotation 0");
                    XYDiagramPaneBase myPane = diagram.DefaultPane;
                    ((FreePosition)chartControlDeptDay.Annotations[i].ShapePosition).DockTarget = myPane;
                    ((FreePosition)chartControlDeptDay.Annotations[i].ShapePosition).DockCorner = DockCorner.LeftTop;

                    TextAnnotation myTextAnnotation = (TextAnnotation)chartControlDeptDay.AnnotationRepository.GetElementByName("Annotation 0");
                    //myTextAnnotation.Text = "<color=red>" + ds2.Tables[0].Rows[i][0].ToString() + " </color>";
                    myTextAnnotation.Text           = ds2.Tables[0].Rows[i][0].ToString();
                    myTextAnnotation.ShapeKind      = ShapeKind.Rectangle;
                    myTextAnnotation.ConnectorStyle = AnnotationConnectorStyle.None;
                }
                ((SplineSeriesView)myseries[i * 2].View).MarkerVisibility     = DefaultBoolean.True;
                ((SplineSeriesView)myseries[i * 2 + 1].View).MarkerVisibility = DefaultBoolean.True;
                ((SplineSeriesView)myseries[i * 2].View).Color     = Color.Orange;
                ((SplineSeriesView)myseries[i * 2 + 1].View).Color = Color.OliveDrab;
                ((FreePosition)chartControlDeptDay.Annotations[i].ShapePosition).InnerIndents.All = 0;
                ((FreePosition)chartControlDeptDay.Annotations[i].ShapePosition).OuterIndents.Top = 10;
                diagram.PaneDistance         = 10;
                diagram.PaneLayoutDirection  = PaneLayoutDirection.Vertical;
                diagram.DefaultPane.SizeMode = PaneSizeMode.UseWeight;
                diagram.DefaultPane.Weight   = 1.2;
            }
            //外观
            chartControlDeptDay.Legend.Visibility          = DefaultBoolean.True;
            chartControlDeptDay.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
            chartControlDeptDay.Legend.AlignmentVertical   = LegendAlignmentVertical.TopOutside;
            chartControlDeptDay.Legend.Direction           = LegendDirection.LeftToRight;

            conn.Close();
        }
Пример #3
0
        private void ExTrade()
        {
            #region Экспоненциальная регрессия
            Microsoft.Office.Interop.Excel.Application       xl  = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction;

            Series series3 = new Series("Экспоненциальный тренд", ViewType.Spline);
            chartControl1.Series.Add(series3);
            series3.ArgumentScaleType = ScaleType.Numerical;
            series3.ValueScaleType    = ScaleType.Numerical;
            int      ch    = 0;
            int      ch1   = 0;
            int      ch2   = 0;
            int      ch3   = 1;
            double   x1    = 0;
            int      count = dataGridView1.RowCount;
            double[] x     = new double[count];
            double[] y     = new double[count];
            double[] yY    = new double[count];

            for (int k = 0; k < count; k++)
            {
                x[k] = Convert.ToDouble(dataGridView1.Rows[k].Cells[3].Value);
                y[k] = Convert.ToDouble(dataGridView1.Rows[k].Cells[2].Value);
                ch++;
            }

            for (int k = 0; k < count; k++)
            {
                object[,] lin1 = wsf.LogEst(y, x, 1, 1);
                double b  = Convert.ToDouble(lin1[1, 2]);
                double m  = Convert.ToDouble(lin1[1, 1]);
                double bb = Math.Round(b, 3);
                double mm = Convert.ToDouble(Math.Round(Math.Log(m), 4));
                x1    = Convert.ToDouble(dataGridView1.Rows[k].Cells[3].Value);
                yY[k] = Math.Round(bb * Math.Exp(x1 * mm), 2);
                ch3++;
            }
            for (int k = 0; k < yY.Length; k++)
            {
                ch2++;
                series3.Points.Add(new SeriesPoint(ch2, yY[k]));
            }
            TrendLine        trendline1 = new TrendLine("Экспоненциальный тренд");
            SplineSeriesView myView     = ((SplineSeriesView)series3.View);
            trendline1.ExtrapolateToInfinity = false;
            trendline1.ShowInLegend          = false;
            trendline1.Visible             = false;
            trendline1.Color               = Color.Red;
            trendline1.LineStyle.DashStyle = DashStyle.Dash;
            myView.Indicators.Add(trendline1);
            try
            {
                object[,] lin1 = wsf.LogEst(y, x, 1, 1);
                double b  = Convert.ToDouble(lin1[1, 2]);
                double m  = Convert.ToDouble(lin1[1, 1]);
                double bb = Math.Round(b, 3);
                double mm = Convert.ToDouble(Math.Round(Math.Log(m), 4));

                double yY1 = Math.Round(bb * Math.Exp(mm * (ch + 1)), 2);
                textBox2.Text = yY1.ToString();
                chartControl1.Series[1].Points.Add(new SeriesPoint((ch + 1), yY1));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ФАНЗ");
                return;
            }

            for (int jk = 0; jk < x.Length; jk++)
            {
                ch1++;
                chartControl1.Series[0].Points.Add(new SeriesPoint(ch1, Convert.ToDouble(dataGridView1[2, jk].Value)));
            }
            #endregion
        }