From 51627fe7b102fdec1708383b0ea3d54226993ca9 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 17 May 2016 11:01:00 +0200 Subject: [PATCH] plot driving mode and altitude (if available and selected) --- VectoCore/VectoCoreTest/Utils/GraphWriter.cs | 39 +++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs index a17332c7d8..d5ca8937cc 100644 --- a/VectoCore/VectoCoreTest/Utils/GraphWriter.cs +++ b/VectoCore/VectoCoreTest/Utils/GraphWriter.cs @@ -61,6 +61,8 @@ namespace TUGraz.VectoCore.Tests.Utils public static ModalResultField[] Xfields { get; set; } + public static bool PlotDrivingMode = false; + public static void Enable() { @@ -135,9 +137,37 @@ namespace TUGraz.VectoCore.Tests.Utils chartArea.AxisY2.RoundAxisValues(); chartArea.AxisY2.Interval = Math.Round(max / 5); + if (modDataV3.Columns.Contains("Alt")) { + var alt = LoadData(modDataV3, "Alt"); + var seriesAlt = CreateSeries("Altitude", legend, chartArea, chart, Color.Brown, x, alt); + seriesAlt.YAxisType = AxisType.Secondary; + } var seriesGrad = CreateSeries("Gradient", legend, chartArea, chart, Color.Coral, x, grad); seriesGrad.YAxisType = AxisType.Secondary; } + if (PlotDrivingMode && yfield == Yfields.First()) { + if (modDataV3.Columns.Contains("Action")) { + var actionMapping = new Dictionary<string, double> { + { "Accelerate", 2 - 3 }, + { "Coast", 1 - 3 }, + { "Roll", 0 - 3 }, + { "Brake", -1 - 3 } + }; + var action = LoadDataMapped(modDataV3, "Action", actionMapping); + var seriesAction = CreateSeries("Driving Action", legend, chartArea, chart, Color.Magenta, x, action); + //seriesAction.YAxisType = AxisType.Secondary; + } + + if (modDataV3.Columns.Contains("DrivingMode")) { + var modeMapping = new Dictionary<string, double> { + { "DrivingModeDrive", -1 }, + { "DrivingModeBrake", -6 }, + }; + var mode = LoadDataMapped(modDataV3, "DrivingMode", modeMapping); + var seriesAction = CreateSeries("Driving Mode", legend, chartArea, chart, Color.Maroon, x, mode); + //seriesAction.YAxisType = AxisType; + } + } var series1 = CreateSeries(string.Format("{1} - {0}", yfield, Series1Label), legend, chartArea, chart, Color.Blue, x, y); @@ -159,7 +189,7 @@ namespace TUGraz.VectoCore.Tests.Utils AddTitle(chart, Path.GetFileNameWithoutExtension(fileName), Yfields[0].ToString()); chart.Invalidate(); - chart.SaveImage(fileName, ChartImageFormat.Png); + chart.SaveImage(Path.Combine(Path.GetDirectoryName(fileNameV3) ?? "", fileName), ChartImageFormat.Png); } } @@ -322,6 +352,13 @@ namespace TUGraz.VectoCore.Tests.Utils .ToArray(); } + private static double[] LoadDataMapped(DataTable modDataV3, string field, Dictionary<string, double> mapping) + { + return (from x in modDataV3.Rows.Cast<DataRow>() + let val = x.Field<string>(field) + select mapping.ContainsKey(val) ? mapping[val] : double.NaN).ToArray(); + } + private static void AlignChart(Chart chart, string chartToAlign, string chartToAlignWith) { chart.ChartAreas[chartToAlign].AlignWithChartArea = chartToAlignWith; -- GitLab