예제 #1
0
        private async void createStackedEnergyGraphModels()
        {
            for (int i = 0; i < TripIDs.Count; i++)
            {
                List <Ecolog> ecologs = null;
                List <DetailCompareSeriesDatum> data = null;
                String axisXString = null;

                await Task.Run(() =>
                {
                    ecologs = Ecolog.ExtractEcolog(TripIDs[i], SelectedSemanticLink);

                    switch (CurrentAxisX)
                    {
                    case DetailCompareGraphType.Axes.Time:
                        axisXString = "Time [s]";
                        data        = DetailCompareSeriesDatum.CreateTimeStackData(ecologs);
                        break;

                    case DetailCompareGraphType.Axes.Distance:
                        axisXString = "Distance [m]";
                        data        = DetailCompareSeriesDatum.CreateDistanceStackData(ecologs);
                        break;
                    }
                });

                PlotModel plotModel = new PlotModel();

                CategoryAxis axisX = new CategoryAxis();
                axisX.Position     = AxisPosition.Bottom;
                axisX.ItemsSource  = data;
                axisX.StringFormat = "0";
                axisX.MajorStep    = 10;
                axisX.LabelField   = "X";
                axisX.Title        = axisXString;

                LinearAxis axisY = new LinearAxis();
                axisY.Title = "[kWh]";

                plotModel.Axes.Add(axisX);
                plotModel.Axes.Add(axisY);

                ColumnSeries seriesRolling = new ColumnSeries();
                seriesRolling.ItemsSource = data;
                seriesRolling.ValueField  = "RollingLoss";
                seriesRolling.FillColor   = OxyColors.Orange;
                seriesRolling.IsStacked   = true;
                plotModel.Series.Add(seriesRolling);

                ColumnSeries seriesRegeneLoss = new ColumnSeries();
                seriesRegeneLoss.ItemsSource = data;
                seriesRegeneLoss.ValueField  = "RegeneLoss";
                seriesRegeneLoss.FillColor   = OxyColors.DeepPink;
                seriesRegeneLoss.IsStacked   = true;
                plotModel.Series.Add(seriesRegeneLoss);

                ColumnSeries seriesAir = new ColumnSeries();
                seriesAir.ItemsSource = data;
                seriesAir.ValueField  = "AirLoss";
                seriesAir.FillColor   = OxyColors.Yellow;
                seriesAir.IsStacked   = true;
                plotModel.Series.Add(seriesAir);

                ColumnSeries seriesConvertLoss = new ColumnSeries();
                seriesConvertLoss.ItemsSource = data;
                seriesConvertLoss.ValueField  = "ConvertLoss";
                seriesConvertLoss.FillColor   = OxyColors.Red;
                seriesConvertLoss.IsStacked   = true;
                plotModel.Series.Add(seriesConvertLoss);

                switch (i)
                {
                case 0:
                    LabelMinText = "Min trip: TripID = " + TripIDs[i] + ", StartTime = " + ecologs.Min(v => v.Jst);
                    PlotModelMin = plotModel;
                    break;

                case 1:
                    LabelMedianText = "Median trip: TripID = " + TripIDs[i] + ", StartTime = " + ecologs.Min(v => v.Jst);
                    PlotModelMedian = plotModel;
                    break;

                case 2:
                    LabelMaxText = "Max trip: TripID = " + TripIDs[i] + ", StartTime = " + ecologs.Min(v => v.Jst);
                    PlotModelMax = plotModel;
                    break;
                }
            }
        }
예제 #2
0
        private async void createAccGraphModels()
        {
            for (int i = 0; i < TripIDs.Count; i++)
            {
                List <Ecolog> ecologs = null;
                List <DetailCompareSeriesDatum> data = null;
                String axisXString = null;

                await Task.Run(() =>
                {
                    ecologs = Ecolog.ExtractEcolog(TripIDs[i], SelectedSemanticLink);

                    switch (CurrentAxisX)
                    {
                    case DetailCompareGraphType.Axes.Time:
                        axisXString = "Time [s]";
                        data        = DetailCompareSeriesDatum.CreateTimeAccData(ecologs);
                        break;

                    case DetailCompareGraphType.Axes.Distance:
                        axisXString = "Distance [m]";
                        data        = DetailCompareSeriesDatum.CreateDistanceAccData(ecologs);
                        break;
                    }
                });

                PlotModel plotModel = new PlotModel();

                LinearAxis axisX = new LinearAxis();
                axisX.Position = AxisPosition.Bottom;
                axisX.Title    = axisXString;

                LinearAxis axisY = new LinearAxis();
                axisY.Title = "Acc [m/s^2]";

                //plotModel.Axes.Add(axisX);
                plotModel.Axes.Add(axisY);

                LineSeries series = new LineSeries();
                series.ItemsSource = data;
                series.DataFieldX  = "X";
                series.DataFieldY  = "Y";

                plotModel.Series.Add(series);

                switch (i)
                {
                case 0:
                    LabelMinText = "Min trip: TripID = " + TripIDs[i] + ", StartTime = " + ecologs.Min(v => v.Jst);
                    PlotModelMin = plotModel;
                    break;

                case 1:
                    LabelMedianText = "Median trip: TripID = " + TripIDs[i] + ", StartTime = " + ecologs.Min(v => v.Jst);
                    PlotModelMedian = plotModel;
                    break;

                case 2:
                    LabelMaxText = "Max trip: TripID = " + TripIDs[i] + ", StartTime = " + ecologs.Min(v => v.Jst);
                    PlotModelMax = plotModel;
                    break;
                }
            }
        }