protected virtual Series CreateBarSeries(StrategyDataItemInfo info)
        {
            Series s = new Series();

            Chart.Series.Add(s);
            s.Name = info.Name;
            s.ArgumentDataMember = GetArgumentDataMember(info);
            s.ArgumentScaleType  = GetArgumentScaleType(info);
            s.ValueDataMembers.AddRange(info.FieldName);
            s.ValueScaleType = ScaleType.Numerical;
            s.ShowInLegend   = true;
            SideBySideBarSeriesView view = new SideBySideBarSeriesView();

            s.View                  = view;
            view.EqualBarWidth      = true;
            view.Color              = info.Color;
            view.BarWidth           = info.GraphWidth == 1 ? view.BarWidth : (int)(info.GraphWidth * DpiProvider.Default.DpiScaleFactor);
            view.FillStyle.FillMode = FillMode.Solid;
            view.Border.Visibility  = DefaultBoolean.False;
            view.AggregateFunction  = SeriesAggregateFunction.Maximum;
            object           dataSource = GetDataSource(info);
            IResizeableArray array      = dataSource as IResizeableArray;

            if (array == null || array.Count < BigDataCount)
            {
                s.DataSource = dataSource;
            }
            else
            {
                s.Points.AddRange(CreateSeriesPoints(info));
            }
            return(s);
        }
示例#2
0
        private void cmbChooseChart_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cmbChooseChart.SelectedIndex)
            {
            case 0:
            {
                var shape = new SideBySideBarSeriesView();
                ccTaskStatisticalFigure.Series[0].View = shape;
            } break;

            case 1:
            {
                var shape        = new PieSeriesView();
                var label        = ccTaskStatisticalFigure.Series[0].Label;
                var pointOptions = label.PointOptions;
                pointOptions.PointView = PointView.ArgumentAndValues;
                pointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                ccTaskStatisticalFigure.Series[0].View  = shape;
            } break;

            case 2:
            {
                var shape = new LineSeriesView();
                ccTaskStatisticalFigure.Series[0].View = shape;
            } break;

            case 3:
            {
                var shape = new AreaSeriesView();
                shape.Transparency = (byte)135;
                ccTaskStatisticalFigure.Series[0].View = shape;
            } break;
            }
        }
 private void cmbChooseChart_SelectedIndexChanged(object sender, EventArgs e)
 {
     switch (cmbChooseChart.SelectedIndex)
     {
         case 0:
             {
                 var shape = new SideBySideBarSeriesView();
                 ccTaskStatisticalFigure.Series[0].View = shape;
             } break;
         case 1:
             {
                 var shape = new PieSeriesView();
                 var label = ccTaskStatisticalFigure.Series[0].Label;
                 var pointOptions = label.PointOptions;
                 pointOptions.PointView = PointView.ArgumentAndValues;
                 pointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                 ccTaskStatisticalFigure.Series[0].View = shape;
             } break;
         case 2:
             {
                 var shape = new LineSeriesView();
                 ccTaskStatisticalFigure.Series[0].View = shape;
             } break;
         case 3:
             {
                 var shape = new AreaSeriesView();
                 shape.Transparency = (byte)135;
                 ccTaskStatisticalFigure.Series[0].View = shape;
             } break;
     }
 }
示例#4
0
        private void RenderData(int month, int year, bool firstLoad)
        {
            chartControl1.Titles[0].Text = "กราฟแสดงยอดขายรายเดือน";
            Param.DataSet = new DataSet();
            DataTable data = new DataTable();

            if ((bool)_JSON.success)
            {
                data = new DataTable();
                data.Columns.Add("Name", typeof(string));
                data.Columns.Add("Pay", typeof(double));
                data.Columns.Add("NotPay", typeof(double));
                data.PrimaryKey = new DataColumn[] { data.Columns["Name"] };
                data.TableName  = "Data-headSale";

                Hashtable hash = new Hashtable();
                var       idx  = 0;
                var       cnt  = _JSON.result.Count;
                for (int i = 0; i < cnt; i++)
                {
                    if (!data.Rows.Contains(_JSON.result[i].headSale.ToString()))
                    {
                        var val = _JSON.result[i].headSale.ToString();
                        data.Rows.Add(val, 0, 0);
                        hash.Add(val, idx++);
                    }
                    var column  = (bool)_JSON.result[i].isPay ? "Pay" : "NotPay";
                    var current = data.Rows[hash[_JSON.result[i].headSale.ToString()]][column];
                    data.Rows[hash[_JSON.result[i].headSale.ToString()]][column] = current + (int)_JSON.result[i].totalPrice;
                }

                SideBySideBarSeriesView sideBySideBarSeriesView = new SideBySideBarSeriesView();
                sideBySideBarSeriesView.BarWidth = 10D;

                _SERIES = new Series[idx];
                for (int i = 0; i < idx; i++)
                {
                    _SERIES[i]      = new Series();
                    _SERIES[i].Name = data.Rows[i]["Name"].ToString() == "" ? " " : data.Rows[i]["Name"].ToString();
                    _SERIES[i].Points.Clear();
                    SeriesPoint seriesPoint = new SeriesPoint(_SERIES[i].Name, (double)data.Rows[i]["Pay"]);
                    _SERIES[i].Points.Add(seriesPoint);
                    _SERIES[i].View = sideBySideBarSeriesView;
                    //_SERIES[i].CrosshairLabelPattern = "{V:#,#}";
                }

                chartControl1.SeriesSerializable = _SERIES;
                chartControl1.Visible            = true;
            }
            else
            {
                chartControl1.Visible = false;
            }

            if (splashScreenManager.IsSplashFormVisible)
            {
                splashScreenManager.CloseWaitForm();
            }
        }
        private void RenderData(int month, int year, bool firstLoad)
        {
            chartControl1.Titles[0].Text = "กราฟแสดงยอดขายรายเดือน";
            Param.DataSet = new DataSet();
            DataTable data = new DataTable();

            if ((bool)_JSON.success)
            {
                data = new DataTable();
                data.Columns.Add("Name", typeof(string));
                data.Columns.Add("Pay", typeof(double));
                data.Columns.Add("NotPay", typeof(double));
                data.PrimaryKey = new DataColumn[] { data.Columns["Name"] };
                data.TableName = "Data-headSale";

                Hashtable hash = new Hashtable();
                var idx = 0;
                var cnt = _JSON.result.Count;
                for (int i = 0; i < cnt; i++)
                {
                    if (!data.Rows.Contains(_JSON.result[i].headSale.ToString()))
                    {
                        var val = _JSON.result[i].headSale.ToString();
                        data.Rows.Add(val, 0, 0);
                        hash.Add(val, idx++);
                    }
                    var column = (bool)_JSON.result[i].isPay ? "Pay" : "NotPay";
                    var current = data.Rows[hash[_JSON.result[i].headSale.ToString()]][column];
                    data.Rows[hash[_JSON.result[i].headSale.ToString()]][column] = current+(int)_JSON.result[i].totalPrice;
                }

                SideBySideBarSeriesView sideBySideBarSeriesView = new SideBySideBarSeriesView();
                sideBySideBarSeriesView.BarWidth = 10D;

                _SERIES = new Series[idx];
                for (int i = 0; i < idx; i++)
                {
                    _SERIES[i] = new Series();
                    _SERIES[i].Name = data.Rows[i]["Name"].ToString() == "" ? " " : data.Rows[i]["Name"].ToString();
                    _SERIES[i].Points.Clear();
                    SeriesPoint seriesPoint = new SeriesPoint(_SERIES[i].Name, (double)data.Rows[i]["Pay"]);
                    _SERIES[i].Points.Add(seriesPoint);
                    _SERIES[i].View = sideBySideBarSeriesView;
                    //_SERIES[i].CrosshairLabelPattern = "{V:#,#}";
                }

                chartControl1.SeriesSerializable = _SERIES;
                chartControl1.Visible = true;

            }
            else
            {
                chartControl1.Visible = false;
            }

            if (splashScreenManager.IsSplashFormVisible)
                splashScreenManager.CloseWaitForm();
        }
示例#6
0
        //-----------------------------------------------------------------------------

        private void BuildView()
        {
            SideBySideBarSeriesView bar = xrChart1.Series[0].View as SideBySideBarSeriesView;

            bar.AxisX.Title.Text    = "Height Differences";
            bar.AxisX.Label.Angle   = -90;
            bar.AxisX.Title.Visible = true;
            bar.AxisY.Title.Text    = "Points";
            bar.AxisY.Title.Visible = true;
        }
示例#7
0
        private void WebChartControl_BoundDataChanged(object sender, EventArgs e)
        {
            Series series = webChartControl.Series.Where(s => s.Name == "2015").FirstOrDefault() as Series;

            if (series != null)
            {
                SideBySideBarSeriesView view = series.View as SideBySideBarSeriesView;
                if (view != null)
                {
                    view.Color = System.Drawing.Color.Orange;
                    view.FillStyle.FillMode = FillMode.Solid;
                }
            }
        }
 static void InitSeries(WebChartControl chart)
 {
     using (NWindEntities dbContext = new NWindEntities()) {
         SideBySideBarSeriesView view = new SideBySideBarSeriesView();
         view.FillStyle.FillMode = FillMode.Solid;
         Series series = new Series()
         {
             Name = "Product Price",
             View = view
         };
         series.ArgumentDataMember = "ProductName";
         series.ValueDataMembers.AddRange(new string[] { "UnitPrice" });
         chart.Series.Add(series);
     }
 }
        protected virtual Series CreateBarSeries(StrategyDataItemInfo info)
        {
            Series s = new Series();

            s.Name = info.FieldName;
            s.ArgumentDataMember = "Time";
            s.ValueDataMembers.AddRange(info.FieldName);
            s.ValueScaleType = ScaleType.Numerical;
            s.ShowInLegend   = true;
            SideBySideBarSeriesView view = new SideBySideBarSeriesView();

            view.Color    = info.Color;
            view.BarWidth = info.GraphWidth == 1 ? view.BarWidth : (int)(info.GraphWidth * DpiProvider.Default.DpiScaleFactor);
            s.View        = view;
            s.DataSource  = Strategy.StrategyData;
            return(s);
        }
        Series CreateBarSeries(List <OrderBookStatisticItem> list, string name, string value, Color color)
        {
            Series s = new Series();

            s.Name = name;
            s.ArgumentDataMember = "Time";
            s.ValueDataMembers.AddRange(value);
            s.ValueScaleType = ScaleType.Numerical;
            s.ShowInLegend   = true;
            SideBySideBarSeriesView view = new SideBySideBarSeriesView();

            view.Color   = color;
            view.AxisY   = ((XYDiagram)this.chartControl1.Diagram).SecondaryAxesY["Hipes"];
            s.View       = view;
            s.DataSource = list;
            return(s);
        }
示例#11
0
        private void ChardDoldur()
        {
            int       i       = 0;
            XYDiagram diagram = (XYDiagram)chartControlDuruslar.Diagram;

            using (ARAFEntities context = new ARAFEntities())
            {
                var query = from contact in context.ARF_PRODUCTION_SUSPEND
                            where
                            contact.PROD_ID == ProductionID
                            orderby contact.SUSPEND_TIME
                            select contact;

                // Iterate through the collection of Contact items.
                foreach (var result in query)
                {
                    this.chartControlDuruslar.Titles.Clear(); //Chart da varsayılan olarak gelen başlıkları temizliyoruz.
                    this.chartControlDuruslar.Series.Clear(); //Chart da varsayılan olarak gelen series (Liste) temizliyoruz.


                    // Add two custom labels to the X-axis' collection.
                    diagram.AxisX.CustomLabels.Add(new CustomAxisLabel(result.SUSPEND_NAME.ToString()));
                    diagram.AxisX.CustomLabels[i].AxisValue = result.SUSPEND_NAME.ToString();
                    diagram.AxisX.Title.Text      = "";
                    diagram.AxisX.Label.TextColor = Color.Red;
                    // diagram.AxisX.Label.Visible = true;
                    diagram.AxisX.Visibility = DevExpress.Utils.DefaultBoolean.True;
                    Series series1 = new Series("DURUŞ ADI", ViewType.Bar);
                    chartControlDuruslar.Series.Add(series1);
                    series1.DataSource         = query.ToList();
                    series1.ArgumentScaleType  = ScaleType.Qualitative;
                    series1.ArgumentDataMember = "SUSPEND_NAME";
                    series1.ValueScaleType     = ScaleType.Numerical;
                    SideBySideBarSeriesView view = series1.View as SideBySideBarSeriesView;
                    view.BarWidth = 0.1;

                    series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;

                    chartControlDuruslar.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;

                    series1.ValueDataMembers.AddRange(new string[] { "SUSPEND_TIME" });
                    //((pie)chartControl2.Diagram).AxisY.Visible = false;
                    i++;
                }
            }
        }
示例#12
0
        public static WebChartControl CreateChart(DataTable dt_descstats, string levels_x, string levels_legend, int width, int height)
        {
            WebChartControl WebChart = new WebChartControl();


            WebChart.DataSource       = dt_descstats;
            WebChart.SeriesDataMember = levels_legend;

            SideBySideBarSeriesView  view   = new SideBySideBarSeriesView();
            DataSourceBasedErrorBars errbar = new DataSourceBasedErrorBars("sd");

            errbar.Name = "SD";
            //errbar.NegativeErrorDataMember = "SDminus";
            //errbar.PositiveErrorDataMember = "SDplus";
            errbar.NegativeErrorDataMember = "Value_StdDev";
            errbar.PositiveErrorDataMember = "Value_StdDev";
            errbar.Direction           = ErrorBarDirection.Both;
            errbar.EndStyle            = ErrorBarEndStyle.Cap;
            errbar.Color               = Color.Black;
            errbar.LineStyle.Thickness = 1;

            view.Indicators.Add(errbar);

            //FixedValueErrorBars fixbar = new FixedValueErrorBars("fix");
            //fixbar.Name = "fix";
            //fixbar.NegativeError = 2;
            //fixbar.PositiveError = 10;
            //fixbar.Direction = ErrorBarDirection.Both;
            //fixbar.EndStyle = ErrorBarEndStyle.Cap;
            //fixbar.Color = Color.Red;
            //fixbar.LineStyle.Thickness = 3;

            //view.Indicators.Add(fixbar);

            WebChart.SeriesTemplate.ArgumentDataMember = levels_x;
            WebChart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Value_Average" });
            WebChart.SeriesTemplate.View = view;

            WebChart.Width  = width;
            WebChart.Height = height;
            WebChart.DataBind();
            WebChart.EnableViewState = true;

            return(WebChart);
        }
示例#13
0
        public void BindIterationChart(List <ProjectSummary> dataSource)
        {
            IterationChartBar.Series.Clear();
            BarSeriesView effortbarView = new SideBySideBarSeriesView();
            Series        effortSeries  = new Series();

            effortSeries.Name         = Properties.Resources.colSumEffort;
            effortSeries.ShowInLegend = true;
            effortSeries.View         = effortbarView;


            Series inputEffortRateSeries = CreateLineSeries(Properties.Resources.colInputEffortRate, NumericFormat.Percent);

            foreach (var item in dataSource)
            {
                SeriesPoint effortSeriesPoint = new SeriesPoint(item.Name, new object[] { ((object)(item.SumEffort)) });
                effortSeries.Points.Add(effortSeriesPoint);

                SeriesPoint inputEffortRateSeriesPoint = new SeriesPoint(item.Name, new object[] { ((object)(item.SumInputEffortRate)) });
                inputEffortRateSeries.Points.Add(inputEffortRateSeriesPoint);
            }
            IterationChartBar.Series.Add(effortSeries);
            IterationChartBar.Series.Add(inputEffortRateSeries);

            XYDiagram diagram = IterationChartBar.Diagram as XYDiagram;

            if (diagram == null)
            {
                return;
            }
            diagram.AxisY.Title.Visible = true;
            diagram.AxisY.Title.Text    = Properties.Resources.WorkUnit;

            if (diagram.SecondaryAxesY.Count <= 0)
            {
                SecondaryAxisY secondAxisY = new SecondaryAxisY();
                diagram.SecondaryAxesY.Add(secondAxisY);
            }
            LineSeriesView inputEffortRateView = inputEffortRateSeries.View as LineSeriesView;

            if (inputEffortRateView != null)
            {
                inputEffortRateView.AxisY = diagram.SecondaryAxesY[0];
            }
        }
示例#14
0
        public static WebChartControl CreateHist(DataTable dt_hist, string histlevels, int width, int height)
        {
            WebChartControl WebChart = new WebChartControl();


            WebChart.DataSource       = dt_hist;
            WebChart.SeriesDataMember = "timept";

            SideBySideBarSeriesView view = new SideBySideBarSeriesView();

            WebChart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Value_Average" });
            WebChart.SeriesTemplate.View = view;

            WebChart.Width  = width;
            WebChart.Height = height;
            WebChart.DataBind();
            WebChart.EnableViewState = true;

            return(WebChart);
        }
示例#15
0
        protected virtual Series CreateBarSeries(StrategyDataItemInfo info)
        {
            Series s = new Series();

            s.Name = info.Name;
            s.ArgumentDataMember = GetArgumentDataMember(info);
            s.ArgumentScaleType  = GetArgumentScaleType(info);
            s.ValueDataMembers.AddRange(info.FieldName);
            s.ValueScaleType = ScaleType.Numerical;
            s.ShowInLegend   = true;
            SideBySideBarSeriesView view = new SideBySideBarSeriesView();

            view.Color    = info.Color;
            view.BarWidth = info.GraphWidth == 1 ? view.BarWidth : (int)(info.GraphWidth * DpiProvider.Default.DpiScaleFactor);
            //view.EqualBarWidth = true;
            view.FillStyle.FillMode = FillMode.Solid;
            view.Border.Visibility  = DefaultBoolean.False;
            s.View       = view;
            s.DataSource = GetDataSource(info);
            return(s);
        }
示例#16
0
        private void frmChartManageDao_Load(object sender, EventArgs e)
        {
            // gắn title Dao
            ChartTitle chartTitle = new ChartTitle();

            chartTitle.Text = "QUAN LY DAO HOB (TOTAL)";
            chartDao.Titles.Add(chartTitle);


            //khởi tạo series Dao
            _series1 = new Series("QtyProduct", ViewType.Bar);
            _series1.ArgumentDataMember  = "ProductCode";
            _series1.ValueDataMembers[0] = "QtyProduct";
            _series1.ArgumentScaleType   = ScaleType.Qualitative;
            _series2 = new Series("QtyProductMax", ViewType.Line);
            _series2.ArgumentDataMember  = "ProductCode";
            _series2.ValueDataMembers[0] = "QtyProductMax";
            _series2.ArgumentScaleType   = ScaleType.Qualitative;
            _series3 = new Series("QtyMai", ViewType.Line);
            _series3.ArgumentDataMember  = "ProductCode";
            _series3.ValueDataMembers[0] = "QtyMai";
            _series3.ArgumentScaleType   = ScaleType.Qualitative;

            _series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            _series2.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            _series3.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;

            chartDao.Series.AddRange(new Series[] { _series1, _series2, _series3 });

            //Khởi tạo series Dao Detail
            Series seriesDetail1 = new Series("QtyProduct", ViewType.Bar);

            seriesDetail1.ArgumentDataMember  = "CreatedAt";
            seriesDetail1.ValueDataMembers[0] = "QtyProduct";
            seriesDetail1.ArgumentScaleType   = ScaleType.Qualitative;
            Series seriesDetail2 = new Series("QtyProductMax", ViewType.Line);

            seriesDetail2.ArgumentDataMember  = "CreatedAt";
            seriesDetail2.ValueDataMembers[0] = "QtyProductMax";
            seriesDetail2.ArgumentScaleType   = ScaleType.Qualitative;

            Series seriesDetail3 = new Series("TotalProduct", ViewType.Line);

            seriesDetail3.ArgumentDataMember  = "CreatedAt";
            seriesDetail3.ValueDataMembers[0] = "TotalProduct";
            seriesDetail3.ArgumentScaleType   = ScaleType.Qualitative;
            chartDaoDetail.Series.AddRange(new Series[] { seriesDetail1, seriesDetail2, seriesDetail3 });

            seriesDetail1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            seriesDetail2.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            seriesDetail3.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;

            // format Axis
            XYDiagram diagram = chartDaoDetail.Diagram as XYDiagram;

            //diagram.AxisX.DateTimeScaleOptions.;
            //diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Millisecond;
            diagram.AxisY.Title.Alignment = StringAlignment.Center;
            diagram.AxisY.Title.Text      = "Cột 1";
            diagram.AxisY.Title.Visible   = true;
            diagram.AxisY.Title.TextColor = Color.Red;
            diagram.AxisY.Label.TextColor = Color.Red;


            XYDiagram diaDao = chartDao.Diagram as XYDiagram;

            diaDao.AxisY.Title.Alignment = StringAlignment.Center;
            diaDao.AxisY.Title.Text      = "Cột 1";
            diaDao.AxisY.Title.Visible   = true;
            diaDao.AxisY.Title.TextColor = Color.Red;
            diaDao.AxisY.Label.TextColor = Color.Red;

            SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis");

            ((XYDiagram)chartDao.Diagram).SecondaryAxesY.Add(myAxisY);
            ((XYDiagram)chartDaoDetail.Diagram).SecondaryAxesY.Add(myAxisY);
            ((LineSeriesView)_series3.View).AxisY      = myAxisY;
            ((LineSeriesView)seriesDetail3.View).AxisY = myAxisY;
            myAxisY.Title.Alignment = StringAlignment.Center;

            myAxisY.Title.Text      = "Cột 2";
            myAxisY.Title.Visible   = true;
            myAxisY.Title.TextColor = Color.Green;
            myAxisY.Label.TextColor = Color.Green;
            myAxisY.Color           = Color.Green;

            // Series Label
            SeriesPoint s = new SeriesPoint();

            PointSeriesLabel         barSeries   = _series1.Label as PointSeriesLabel;
            SideBySideBarSeriesLabel l           = chartDao.Series[0].Label as SideBySideBarSeriesLabel;
            SideBySideBarSeriesView  v           = chartDao.Series[0].View as SideBySideBarSeriesView;
            BarSeriesLabel           seriesLabel = chartDao.Series[0].Label as BarSeriesLabel;

            PointSeriesLabel p = _series1.Label as PointSeriesLabel;



            //seriesLabel.BackColor
            seriesLabel.Position        = BarSeriesLabelPosition.TopInside;
            seriesLabel.TextOrientation = TextOrientation.Horizontal;

            v.EqualBarWidth = true;

            //seriesLabel.MaxWidth = (int)barSeries.BarWidth;

            _lstDao = ManageDaoHOBBO.Instance.FindAll();
            if (_lstDao.Count > 0)
            {
                chartDao.DataSource = _lstDao;
                //start thread
                _threadLoadDaoDetail = new Thread(new ThreadStart(loadDaoDetails));
                _threadLoadDaoDetail.IsBackground = true;
                _threadLoadDaoDetail.Start();
            }
        }
示例#17
0
        public void CreateLineplot(DataTable mydt)
        {
            _coloroverride = -1;
            string seriesby = _settings.seriesby;
            string colorsby = _settings.colorvar;
            Color  myseriescolor;

            DataTable dataxy_all = DataTableExtensions.Data_SelectColumnXY(mydt, _settings.xaxisvar, _settings.yaxisvar, seriesby, colorsby);


            List <string> series_levels = dataxy_all.AsEnumerable().Select(x => x.Field <string>("seriesby")).Distinct().ToList();
            List <string> colors_levels = dataxy_all.AsEnumerable().Select(x => x.Field <string>("colorsby")).Distinct().ToList();

            colors_levels.Sort();

            _colorLevels = colors_levels;             //use this to create a manual legend later if needed


            List <string> seriesIDs = new List <string>();

            if (seriesby == "id")
            {
                seriesIDs = dataxy_all.AsEnumerable().Select(x => x.Field <string>("id")).Distinct().ToList();
            }
            else
            {
                seriesIDs = dataxy_all.AsEnumerable().Select(x => x.Field <string>("seriesby")).Distinct().ToList();
            }


            int _nall = dataxy_all.Rows.Count;

            if (_nall > 0)
            {
                List <Series> list_o_series = new List <Series>();

                //foreach (string s in seriesIDs)
                for (int s = 0; s < seriesIDs.Count; s++)
                {
                    for (int s_color = 0; s_color < colors_levels.Count; s_color++)
                    {
                        dataxy_all.DefaultView.Sort             = "seriesby ASC, colorsby ASC, x ASC";
                        dataxy_all.DefaultView.ApplyDefaultSort = true;
                        DataView vw = dataxy_all.AsDataView();

                        string rowfilter = (seriesby == "id") ?
                                           String.Format("{0}='{1}' and colorsby='{2}'", seriesby, seriesIDs[s], colors_levels[s_color]) :
                                           String.Format("{0}='{1}' and colorsby='{2}'", "seriesby", seriesIDs[s], colors_levels[s_color]);

                        //string rowfilter = (seriesby == "id") ?
                        //			String.Format("{0}='{1}'", seriesby, seriesIDs[s]) :
                        //			String.Format("{0}='{1}'", "seriesby", seriesIDs[s]);

                        vw.RowFilter = rowfilter;
                        //vw.Sort = String.Format("{0} {1}", "x", "ASC");  //sort by the x variable
                        //vw.ApplyDefaultSort = true;

                        DataTable dataxy = vw.ToTable();

                        dataxy.DefaultView.Sort             = "x ASC";
                        dataxy.DefaultView.ApplyDefaultSort = true;

                        n = dataxy.Rows.Count;

                        if (n > 0)
                        {
                            string        current_colorlevel = dataxy.AsEnumerable().Select(f => f.Field <string>("colorsby")).Min().ToString();
                            List <string> series_colors      = dataxy.AsEnumerable().Select(f => f.Field <string>("colorsby")).ToList();


                            //Switch to alternate geom if needed
                            if (_settings.vars_for_altgeom.Contains(current_colorlevel))
                            {
                                _settings.activegeom = _settings.altgeom;
                            }
                            else
                            {
                                _settings.activegeom = _settings.geom;
                            }


                            int colorindex = 0;

                            //Get the correct color
                            if (colorsby != "none")
                            {
                                for (int c = 0; c < colors_levels.Count; c++)
                                {
                                    if (current_colorlevel == colors_levels[c])
                                    {
                                        colorindex = c;
                                    }
                                }
                            }
                            myseriescolor = _settings.color(colorindex % 15);

                            if (_coloroverride >= 0)
                            {
                                myseriescolor = _settings.color(_coloroverride % 15);
                            }


                            SeriesPoint[] seriesPoints = CreateSeriesPoints(dataxy, colorsby, colors_levels, series_colors, colorindex, myseriescolor);
                            //TOFIX SeriesPoint[] seriesPoints = new DxSeriesPoints(dataxy, "x", "y", colorsby, colors_levels, series_colors, colorindex, myseriescolor);


                            Series series = new Series();

                            SideBySideBarSeriesView barSeriesView   = new SideBySideBarSeriesView();
                            LineSeriesView          lineSeriesView  = new LineSeriesView();
                            PointSeriesView         pointSeriesView = new PointSeriesView();

                            if (_settings.activegeom == LineplotGeom.Bar)
                            {
                                //barSeriesView = new SideBySideBarSeriesView() ;
                            }
                            else if (_settings.activegeom == LineplotGeom.Line)
                            {
                                //lineSeriesView = new LineSeriesView();
                                lineSeriesView.LineMarkerOptions.FillStyle.FillMode = FillMode.Solid;
                                lineSeriesView.LineMarkerOptions.Kind = _markers[s % _markers.Count];
                            }
                            else
                            {
                                pointSeriesView.PointMarkerOptions.FillStyle.FillMode = FillMode.Solid;
                                MarkerKind mymarker = new MarkerKind();

                                if (_settings.activegeom == LineplotGeom.Circle)
                                {
                                    mymarker = MarkerKind.Circle;
                                }
                                if (_settings.activegeom == LineplotGeom.Square)
                                {
                                    mymarker = MarkerKind.Square;
                                }
                                if (_settings.activegeom == LineplotGeom.Cross)
                                {
                                    mymarker = MarkerKind.Cross;
                                }
                                if (_settings.activegeom == LineplotGeom.Star)
                                {
                                    mymarker = MarkerKind.Star;
                                }

                                pointSeriesView.PointMarkerOptions.Kind = mymarker;
                                pointSeriesView.PointMarkerOptions.Size = _settings.markersize;

                                if (_settings.activegeom == LineplotGeom.Star)
                                {
                                    pointSeriesView.PointMarkerOptions.StarPointCount = 6;
                                }
                            }



                            if (_settings.xaxis_is_date)
                            {
                                this.xydiagram.AxisX.DateTimeScaleOptions.ScaleMode   = ScaleMode.Continuous;
                                this.xydiagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Month;
                                this.xydiagram.AxisX.Label.TextPattern = "{A:dd-MMM-yy}";
                                series.ToolTipPointPattern             = "x={A:dd-MMM-yy} y={V:F2} {HINT}";
                            }
                            else
                            {
                                series.ToolTipPointPattern = "x={A:F2} y={V:F2} {HINT}";
                            }


                            ToolTipRelativePosition pos = new ToolTipRelativePosition();
                            pos.OffsetX = -10;
                            pos.OffsetY = -10;
                            chart.ToolTipOptions.ToolTipPosition = pos;

                            if (_settings.activegeom == LineplotGeom.Bar)
                            {
                                series.View = barSeriesView;
                            }
                            else if (_settings.activegeom == LineplotGeom.Line)
                            {
                                series.View = lineSeriesView;
                            }
                            else
                            {
                                series.View = pointSeriesView;
                            }

                            series.Points.AddRange(seriesPoints);

                            list_o_series.Add(series);
                        }
                    }
                }

                //Add the series to the chart
                int max_pts = list_o_series.Select(s => s.Points.Count).Max();

                foreach (Series s in list_o_series)
                {
                    //first add those with the max number of points
                    if (s.Points.Count == max_pts)
                    {
                        chart.Series.Add(s);
                    }
                }
                foreach (Series s in list_o_series)
                {
                    //then add those with fewer points
                    if (s.Points.Count != max_pts)
                    {
                        chart.Series.Add(s);
                    }
                }


                // consider adding N=??, intrcpt=, slope=
                string mytitle       = "";
                string mainTitleText = String.Format("{0}", mytitle);                 //, seriesPoints.Count());

                chart.Width  = _settings.W;
                chart.Height = _settings.H;

                this.AddTitles(mainTitleText, "", _settings.xaxisvar, _settings.yaxisvar);

                chart.BorderOptions.Color = Color.White;

                chart.CustomDrawSeriesPoint += Lineplot_TransparentPoint;
                chart.CustomDrawSeries      += Lineplot_TransparentLine;

                //chart.CustomCallback += _dxcharts.Mychart_CustomCallback;

                chart.ToolTipEnabled = DevExpress.Utils.DefaultBoolean.True;
                chart.ToolTipOptions.ShowForSeries = true;

                chart.CrosshairEnabled = DevExpress.Utils.DefaultBoolean.False;

                if (colorsby != "none")
                {
                    for (int lev = 0; lev < colors_levels.Count; lev++)
                    {
                        // Create a new custom item.
                        CustomLegendItem item = new CustomLegendItem();
                        chart.Legend.CustomItems.Add(item);
                        // Specify its text and marker.
                        item.Text = colors_levels[lev];
                        int coloridx = (_coloroverride >= 0) ? _coloroverride : lev;
                        item.MarkerColor = _settings.colors[coloridx % _settings.colors.Count];
                        //item.
                    }
                }



                chart.Legend.Visibility = (_settings.showLegend) ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;

                LegendAlignmentHorizontal legend_h = new LegendAlignmentHorizontal();
                LegendAlignmentVertical   legend_v = new LegendAlignmentVertical();

                if (_settings.legend_pos_h == "Right")
                {
                    legend_h = LegendAlignmentHorizontal.Right;
                }
                else if (_settings.legend_pos_h == "RightOutside")
                {
                    legend_h = LegendAlignmentHorizontal.RightOutside;
                }
                else if (_settings.legend_pos_h == "Left")
                {
                    legend_h = LegendAlignmentHorizontal.Left;
                }
                else if (_settings.legend_pos_h == "LeftOutside")
                {
                    legend_h = LegendAlignmentHorizontal.LeftOutside;
                }
                else if (_settings.legend_pos_h == "Center")
                {
                    legend_h = LegendAlignmentHorizontal.Center;
                }

                if (_settings.legend_pos_v == "Top")
                {
                    legend_v = LegendAlignmentVertical.Top;
                }
                else if (_settings.legend_pos_v == "TopOutside")
                {
                    legend_v = LegendAlignmentVertical.TopOutside;
                }
                else if (_settings.legend_pos_v == "Bottom")
                {
                    legend_v = LegendAlignmentVertical.Bottom;
                }
                else if (_settings.legend_pos_v == "BottomOutside")
                {
                    legend_v = LegendAlignmentVertical.BottomOutside;
                }
                else if (_settings.legend_pos_v == "Center")
                {
                    legend_v = LegendAlignmentVertical.Center;
                }



                chart.Legend.AlignmentHorizontal = legend_h;
                chart.Legend.AlignmentVertical   = legend_v;

                // Set a value indicating that both autogenerated and custom items are displayed.
                chart.Legend.ItemVisibilityMode = LegendItemVisibilityMode.AutoGeneratedAndCustom;
            }
            else
            {
                //_emptymsg = String.Format("0 cases for{3}{0}{3}{1} by {2}", mytitle, xvar, yvar, Environment.NewLine);
                //return null;
            }
        }
示例#18
0
        public void CreateBarchart(DescStats statstable)         //, string xaxisvar, string colorsvar, string maintitle )
        {
            chart.AxisWholeRangeChanged += LogAxesRangeWhole;
            //chart.AxisVisualRangeChanged += LogAxesRangeVisual;


            string mycolorvar;

            if (_settings.colorvar == "none")
            {
                mycolorvar = (statstable.dt.ColumnNames().Contains("All")) ? "All" : _settings.xaxisvar;
            }
            else
            {
                mycolorvar = _settings.colorvar;
            }



            List <string> colors_levels = statstable.dt.AsEnumerable().Select(x => x.Field <string>(mycolorvar)).Distinct().ToList();
            List <string> xaxis_levels  = statstable.dt.AsEnumerable().Select(x => x.Field <string>(_settings.xaxisvar)).Distinct().ToList();
            List <string> panes_levels  = new List <string>();

            if (_settings.panelvar != "none")
            {
                panes_levels = statstable.dt.AsEnumerable().Select(x => x.Field <string>(_settings.panelvar)).Distinct().ToList();
                panes_levels.Sort();
            }


            //for (int i = 0; i < colors_levels.Count; i++)
            //{
            //	string current_color_lev = colors_levels[i];
            //}


            foreach (Series ser in chart.Series)
            {
                Debug.WriteLine(String.Format("arg data member:[{0}] color data member:[{1}]", ser.ArgumentDataMember, ser.ColorDataMember));
            }


            BarchartSeries barseries = new BarchartSeries(statstable.dt, _settings.xaxisvar, _settings.colorvar, _settings.panelvar, _settings.colors, colors_levels);

            foreach (DxSeriesPoints sp in barseries.list_dxseriespoints)
            {
                Series s = new Series();
                s.Points.AddRange(sp.seriesPoints);
                SideBySideBarSeriesView vw = new SideBySideBarSeriesView();
                s.View = vw;

                var thesd = sp.seriesPointsSD[0].Values[0];

                vw.Indicators.Add(new FixedValueErrorBars
                {
                    Direction     = ErrorBarDirection.Both,
                    Name          = "SD",
                    Color         = Color.Black,
                    PositiveError = thesd,
                    NegativeError = thesd
                });

                chart.Series.Add(s);
            }

            Debug.WriteLine(String.Format("***************************** INIT   # of Panes: {0}", xydiagram.Panes.Count));


            //Additional Panes
            if (panes_levels.Count > 0)
            {
                xydiagram.Panes.Clear();
                Debug.WriteLine(String.Format("***************************** After CLEAR # of Panes: {0}", xydiagram.Panes.Count));
                foreach (string p in panes_levels)
                {
                    // Obtain a diagram and clear its collection of panes.
                    XYDiagramPane pane = new XYDiagramPane(p);
                    xydiagram.Panes.Add(pane);
                    pane.Title.Text                = p;
                    pane.Title.Visibility          = DefaultBoolean.True;
                    xydiagram.PaneLayout.Direction = _settings.panesLayoutDirection;                     // PaneLayoutDirection.Horizontal;
                    Debug.WriteLine(String.Format("**********************************   # of Panes: {0} {1}", xydiagram.Panes.Count, p));

                    // check whether series should be added to this pane.
                    for (int i = 0; i < chart.Series.Count; i++)
                    {
                        // if (sps[i].panename == p)
                        if (barseries.list_dxseriespoints[i].panename == p)
                        {
                            XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View;
                            view.Pane = xydiagram.Panes[p];
                        }
                    }

                    xydiagram.DefaultPane.Visibility = ChartElementVisibility.Hidden;
                }
            }
            //No Additional Panes
            else
            {
                for (int i = 0; i < chart.Series.Count; i++)
                {
                    XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)chart.Series[i].View;
                    view.Pane = xydiagram.DefaultPane;
                }
            }

            chart.DataBind();


            //Adjust axis range if needed
            if (_settings.miny != -999 && _settings.maxy != -999)
            {
                double y1 = _settings.miny;
                double y2 = _settings.maxy;
                //diag.AxisY.VisualRange.SetMinMaxValues(y1, y2);
                xydiagram.AxisY.WholeRange.SetMinMaxValues(y1, y2);
                xydiagram.AxisY.VisualRange.SetMinMaxValues(y1, y2);
            }


            chart.Width  = _settings.W;
            chart.Height = _settings.H;

            #region Titles
            if (_settings.numvars.Count == 1)
            {
                AddTitles(_settings.title, _settings.subtitle, "", String.Format("{0} Mean (SD)", _settings.numvars[0]));
            }
            else
            {
                AddTitles(_settings.title, _settings.subtitle, "", "Mean (SD)");
            }
            #endregion

            chart.BorderOptions.Color = Color.White;


            this.LegendByColorLevels(_settings.colors, colors_levels);

            chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
        }
示例#19
0
        private void BindChart()
        {
            string dimensionName = string.Empty;

            if (dimsionValue > 0)
            {
                dimensionName = ((Dimension)dimsionValue).ToString();
            }
            xrChart1.Series.Clear();
            if (dimsionValue <= 0 && chartType == 0)
            {
                Series pieSeries = new Series();
                pieSeries.ValueScaleType = ScaleType.Numerical;
                pieSeries.LegendPointOptions.PointView = PointView.Argument;
                pieSeries.LegendPointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                PieSeriesView pieView = new PieSeriesView();
                pieView.ExplodedDistancePercentage = 10;
                SeriesTitle title = new SeriesTitle();
                title.Text = GetLocalizedCaption(targetName) + "-" + GetLocalizedCaption("Rate");
                pieView.Titles.Add(title);
                pieView.RuntimeExploding = true;
                pieSeries.View           = pieView;

                List <SaleOverview> dataList = (List <SaleOverview>) this.DataSource;
                var resultData = dataList.AsQueryable().GroupBy("UnitName", "it")
                                 .Select("new (Key as UnitName,Sum(" + targetName + ") as " + targetName + ")", null);

                foreach (var item in resultData)
                {
                    Type        itemType    = item.GetType();
                    SeriesPoint seriesPoint = new SeriesPoint(itemType.GetProperty("UnitName").GetValue(item, null)
                                                              , new object[] { ((object)itemType.GetProperty(targetName).GetValue(item, null)) });
                    pieSeries.Points.Add(seriesPoint);
                }
                xrChart1.Series.Add(pieSeries);

                PieSeriesLabel pieSerieslable = pieSeries.Label as PieSeriesLabel;
                if (pieSerieslable != null)
                {
                    pieSerieslable.PointOptions.PointView = PointView.ArgumentAndValues;
                    pieSerieslable.Position      = PieSeriesLabelPosition.TwoColumns;
                    pieSerieslable.TextAlignment = StringAlignment.Center;
                }
                PiePointOptions options = pieSeries.Label.PointOptions as PiePointOptions;
                if (options != null)
                {
                    options.PercentOptions.PercentageAccuracy = 2;
                    options.PercentOptions.ValueAsPercent     = true;
                    options.ValueNumericOptions.Format        = NumericFormat.Percent;
                }
            }
            else
            {
                List <SaleOverview> dataList     = (List <SaleOverview>) this.DataSource;
                List <string>       demisionList = new List <string>();

                if (!string.IsNullOrEmpty(dimensionName))
                {
                    foreach (var item in dataList)
                    {
                        Type   itemType     = item.GetType();
                        string demisionName = itemType.GetProperty(dimensionName).GetValue(item, null).ToString();
                        if (!demisionList.Contains(demisionName))
                        {
                            demisionList.Add(demisionName);
                        }
                    }
                }
                else
                {
                    demisionList.Add(string.Empty);
                }

                for (int d = 0; d < demisionList.Count; d++)
                {
                    IQueryable resultData = null;
                    if (!string.IsNullOrEmpty(dimensionName))
                    {
                        resultData = dataList.AsQueryable().Where(dimensionName + "=@0", demisionList[d]).GroupBy("UnitName", "it")
                                     .Select("new (Key as UnitName,Sum(" + targetName + ") as " + targetName + ")", null);
                    }
                    else
                    {
                        resultData = dataList.AsQueryable().GroupBy("UnitName", "it")
                                     .Select("new (Key as UnitName,Sum(" + targetName + ") as " + targetName + ")", null);
                    }

                    Series lineSeries = new Series();
                    lineSeries.Name         = demisionList[d];
                    lineSeries.ShowInLegend = true;
                    if (chartType == 1)
                    {
                        LineSeriesView lineView = new LineSeriesView();
                        lineSeries.View = lineView;
                    }
                    else if (chartType == 2)
                    {
                        BarSeriesView barView = new SideBySideBarSeriesView();
                        lineSeries.View = barView;
                    }

                    foreach (var item in resultData)
                    {
                        Type itemType = item.GetType();

                        SeriesPoint effortSeriesPoint = new SeriesPoint(itemType.GetProperty("UnitName").GetValue(item, null)
                                                                        , new object[] { ((object)(itemType.GetProperty(targetName).GetValue(item, null))) });
                        lineSeries.Points.Add(effortSeriesPoint);
                    }
                    xrChart1.Series.Add(lineSeries);
                }
                XYDiagram diagram = xrChart1.Diagram as XYDiagram;
                if (diagram == null)
                {
                    return;
                }
                diagram.AxisY.Title.Visible = true;
                if (!string.IsNullOrEmpty(dimensionName))
                {
                    diagram.AxisY.Title.Text = GetLocalizedCaption(dimensionName) + "-" + GetLocalizedCaption(targetName);
                }
                else
                {
                    diagram.AxisY.Title.Text = string.Empty;
                }
            }
        }