Beispiel #1
0
        public DelayChart(ApproachDelayOptions options, SignalPhase signalPhase)
        {
            Options = options;
            //Set the chart properties
            Chart = ChartFactory.CreateDefaultChart(options);
            ChartFactory.SetImageProperties(Chart);


            //Create the chart legend
            var chartLegend = new Legend();

            chartLegend.Name    = "MainLegend";
            chartLegend.Docking = Docking.Left;
            Chart.Legends.Add(chartLegend);



            //Primary Y axis (delay per vehicle)
            if (Options.ShowDelayPerVehicle)
            {
                if (Options.YAxisMax != null)
                {
                    Chart.ChartAreas[0].AxisY.Maximum = Options.YAxisMax.Value;
                }
                Chart.ChartAreas[0].AxisY.Minimum = 0;
                Chart.ChartAreas[0].AxisY.Enabled = AxisEnabled.True;
                Chart.ChartAreas[0].AxisY.MajorTickMark.Enabled = true;
                Chart.ChartAreas[0].AxisY.MajorGrid.Enabled     = true;
                Chart.ChartAreas[0].AxisY.Interval       = 5;
                Chart.ChartAreas[0].AxisY.TitleForeColor = Color.Blue;
                Chart.ChartAreas[0].AxisY.Title          = "Delay Per Vehicle (Seconds) ";
            }

            //secondary y axis (total delay)
            if (Options.ShowDelayPerVehicle)
            {
                if (Options.Y2AxisMax != null && Options.Y2AxisMax > 0)
                {
                    Chart.ChartAreas[0].AxisY2.Maximum = Options.Y2AxisMax.Value;
                }
                else
                {
                    Chart.ChartAreas[0].AxisY2.Maximum = 10;
                }
                Chart.ChartAreas[0].AxisY2.Minimum = 0;
                Chart.ChartAreas[0].AxisY2.Enabled = AxisEnabled.True;
                Chart.ChartAreas[0].AxisY2.MajorTickMark.Enabled = true;
                Chart.ChartAreas[0].AxisY2.MajorGrid.Enabled     = false;
                Chart.ChartAreas[0].AxisY2.Interval       = 5;
                Chart.ChartAreas[0].AxisY2.Title          = "Delay per Hour (hrs) ";
                Chart.ChartAreas[0].AxisY2.TitleForeColor = Color.Red;
            }

            //Add the point series

            var delayPerVehicleSeries = new Series();

            delayPerVehicleSeries.ChartType  = SeriesChartType.Line;
            delayPerVehicleSeries.Color      = Color.Blue;
            delayPerVehicleSeries.Name       = "Approach Delay Per Vehicle";
            delayPerVehicleSeries.YAxisType  = AxisType.Primary;
            delayPerVehicleSeries.XValueType = ChartValueType.DateTime;

            var delaySeries = new Series();

            delaySeries.ChartType  = SeriesChartType.Line;
            delaySeries.Color      = Color.Red;
            delaySeries.Name       = "Approach Delay";
            delaySeries.YAxisType  = AxisType.Secondary;
            delaySeries.XValueType = ChartValueType.DateTime;


            var pointSeries = new Series();

            pointSeries.ChartType         = SeriesChartType.Point;
            pointSeries.Color             = Color.White;
            pointSeries.Name              = "Posts";
            pointSeries.XValueType        = ChartValueType.DateTime;
            pointSeries.IsVisibleInLegend = false;


            Chart.Series.Add(pointSeries);
            Chart.Series.Add(delaySeries);
            Chart.Series.Add(delayPerVehicleSeries);


            //Add points at the start and and of the x axis to ensure
            //the graph covers the entire period selected by the user
            //whether there is data or not
            Chart.Series["Posts"].Points.AddXY(Options.StartDate, 0);
            Chart.Series["Posts"].Points.AddXY(Options.EndDate, 0);

            AddDataToChart(Chart, signalPhase, Options.SelectedBinSize, Options.ShowTotalDelayPerHour,
                           Options.ShowDelayPerVehicle);
            if (Options.ShowPlanStatistics)
            {
                SetPlanStrips(signalPhase.Plans, Chart, Options.StartDate, Options.ShowPlanStatistics);
            }
        }
Beispiel #2
0
        public ArriveOnRedChart(AoROptions options, SignalPhase signalPhase)
        {
            Options = options;
            Chart   = ChartFactory.CreateDefaultChart(options);
            //Set the chart properties
            ChartFactory.SetImageProperties(Chart);

            //Create the chart legend
            var chartLegend = new Legend();

            chartLegend.Name    = "MainLegend";
            chartLegend.Docking = Docking.Left;
            Chart.Legends.Add(chartLegend);

            if (Options.YAxisMax != null)
            {
                Chart.ChartAreas[0].AxisY.Maximum = Options.YAxisMax.Value;
            }

            Chart.ChartAreas[0].AxisY.Minimum   = 0;
            Chart.ChartAreas[0].AxisY.Title     = "Volume (Vehicles Per Hour)";
            Chart.ChartAreas[0].AxisY.Interval  = 500;
            Chart.ChartAreas[0].AxisY2.Title    = "Percent AoR";
            Chart.ChartAreas[0].AxisY2.Maximum  = 100;
            Chart.ChartAreas[0].AxisY2.Interval = 10;
            Chart.ChartAreas[0].AxisY2.Enabled  = AxisEnabled.True;


            //Add the point series

            var AoRSeries = new Series();

            AoRSeries.ChartType       = SeriesChartType.Line;
            AoRSeries.BorderDashStyle = ChartDashStyle.Dash;
            AoRSeries.Color           = Color.Red;
            AoRSeries.Name            = "Arrivals on Red";
            AoRSeries.XValueType      = ChartValueType.DateTime;

            var TVSeries = new Series();

            TVSeries.ChartType       = SeriesChartType.Line;
            TVSeries.BorderDashStyle = ChartDashStyle.Dash;
            TVSeries.Color           = Color.Black;
            TVSeries.Name            = "Total Vehicles";
            TVSeries.XValueType      = ChartValueType.DateTime;

            var PARSeries = new Series();

            PARSeries.ChartType   = SeriesChartType.Line;
            PARSeries.Color       = Color.Red;
            PARSeries.Name        = "Percent Arrivals on Red";
            PARSeries.BorderWidth = 2;
            PARSeries.XValueType  = ChartValueType.DateTime;
            PARSeries.YAxisType   = AxisType.Secondary;


            var pointSeries = new Series();

            pointSeries.ChartType         = SeriesChartType.Point;
            pointSeries.Color             = Color.White;
            pointSeries.Name              = "Posts";
            pointSeries.XValueType        = ChartValueType.DateTime;
            pointSeries.IsVisibleInLegend = false;


            Chart.Series.Add(pointSeries);
            Chart.Series.Add(AoRSeries);
            Chart.Series.Add(PARSeries);
            Chart.Series.Add(TVSeries);


            //Add points at the start and and of the x axis to ensure
            //the graph covers the entire period selected by the user
            //whether there is data or not
            Chart.Series["Posts"].Points.AddXY(Options.StartDate, 0);
            Chart.Series["Posts"].Points.AddXY(Options.EndDate, 0);

            AddDataToChart(Chart, signalPhase);
            SetPlanStrips(signalPhase.Plans, Chart, Options.StartDate, Options.ShowPlanStatistics);
        }