private IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForAllStints(ICollection <IGrouping <int, LapTelemetryDto> > lapsStintGrouping) { string title = BuildTitleForAllStints(lapsStintGrouping); AxisDefinition xAxis = new AxisDefinition(_y1AxisDataExtractor.XMajorTickSize, _y1AxisDataExtractor.XMajorTickSize / 4, _y1AxisDataExtractor.XUnit); AxisDefinition y1Axis = new AxisDefinition(_y1AxisDataExtractor.YMajorTickSize, _y1AxisDataExtractor.YMajorTickSize / 4, _y1AxisDataExtractor.YUnit); AxisDefinition y2Axis = new AxisDefinition(_y2AxisDataExtractor.YMajorTickSize, _y2AxisDataExtractor.YMajorTickSize / 4, _y2AxisDataExtractor.YUnit); ScatterPlot2YAxis scatterPlot = new ScatterPlot2YAxis(title, xAxis, y1Axis, y2Axis); IColorPaletteProvider colorPaletteProvider = new BasicColorPaletteProvider(); foreach (IGrouping <int, LapTelemetryDto> lapsInStintGroup in lapsStintGrouping) { string series1Title = $"Laps: {string.Join(", ", lapsInStintGroup.Select(x => x.LapSummary.CustomDisplayName))} - Stint: {lapsInStintGroup.Key}"; scatterPlot.AddScatterPlotSeries(_y1AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y1Title + "-" + series1Title, colorPaletteProvider.GetNext().ToOxyColor())); scatterPlot.AddScatterPlotY2Series(_y2AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y2Title + "-" + series1Title, colorPaletteProvider.GetNext().ToOxyColor())); } OnNewScatterPlot(scatterPlot); ScatterPlot2YAxisChartViewModel viewModel = new ScatterPlot2YAxisChartViewModel() { Title = ChartName }; viewModel.FromModel(scatterPlot); return(new[] { viewModel }); }
protected IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForEachStint(IEnumerable <IGrouping <int, LapTelemetryDto> > lapsStintGrouping, AggregatedChartSettingsDto aggregatedChartSettings) { List <IAggregatedChartViewModel> charts = new List <IAggregatedChartViewModel>(); foreach (IGrouping <int, LapTelemetryDto> lapsInStintGroup in lapsStintGrouping) { string title = BuildSeriesTitle(lapsInStintGroup, aggregatedChartSettings); AxisDefinition xAxis = new AxisDefinition(_y1AxisDataExtractor.XMajorTickSize, _y1AxisDataExtractor.XMajorTickSize / 4, _y1AxisDataExtractor.XUnit); AxisDefinition y1Axis = new AxisDefinition(_y1AxisDataExtractor.YMajorTickSize, _y1AxisDataExtractor.YMajorTickSize / 4, _y1AxisDataExtractor.YUnit); AxisDefinition y2Axis = new AxisDefinition(_y2AxisDataExtractor.YMajorTickSize, _y2AxisDataExtractor.YMajorTickSize / 4, _y2AxisDataExtractor.YUnit); ScatterPlot2YAxis scatterPlot = new ScatterPlot2YAxis(title, xAxis, y1Axis, y2Axis); scatterPlot.AddScatterPlotSeries(_y1AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y1Title + "-" + title, OxyColors.Green)); scatterPlot.AddScatterPlotY2Series(_y2AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y2Title + "-" + title, OxyColors.Red)); OnNewScatterPlot(scatterPlot); ScatterPlot2YAxisChartViewModel viewModel = new ScatterPlot2YAxisChartViewModel() { Title = ChartName }; viewModel.FromModel(scatterPlot); charts.Add(viewModel); } return(charts); }
protected override void OnNewScatterPlot(ScatterPlot2YAxis scatterPlot) { double maximumPower = scatterPlot.ScatterPlotSeries.SelectMany(x => x.DataPoints).Max(x => x.Y); double maximumTorque = scatterPlot.ScatterPlotY2Series.SelectMany(x => x.DataPoints).Max(x => x.Y); double maximumRpm = scatterPlot.ScatterPlotY2Series.SelectMany(x => x.DataPoints).Max(x => x.X) * 1.1; double maximum = Math.Max(maximumTorque, maximumPower) * 1.1; scatterPlot.YAxis.SetCustomRange(0, maximum); scatterPlot.YAxis.Title = Y1Title; scatterPlot.Y2Axis.SetCustomRange(0, maximum); scatterPlot.Y2Axis.Title = Y2Title; scatterPlot.XAxis.SetCustomRange(0, maximumRpm); base.OnNewScatterPlot(scatterPlot); }
protected virtual void OnNewScatterPlot(ScatterPlot2YAxis scatterPlot) { }