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; } } }
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; } } }