From 76595d9bd4dca910967f893c71f56debbe14bc47 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 11 Nov 2015 12:56:52 +0100
Subject: [PATCH] graphwriter: split full cycle into smaller parts

---
 GraphDrawer/Program.cs             |  7 +++++
 VectoCoreTest/Utils/GraphWriter.cs | 49 ++++++++++++++++++++++++------
 2 files changed, 46 insertions(+), 10 deletions(-)

diff --git a/GraphDrawer/Program.cs b/GraphDrawer/Program.cs
index b2fc0a6458..9cde53c0c7 100644
--- a/GraphDrawer/Program.cs
+++ b/GraphDrawer/Program.cs
@@ -21,17 +21,24 @@ Tool for plotting graphs comparing Vecto 2.2 and Vecto 3
         private static void Main(string[] args)
         {
             if (args.Contains("--split")) {
+                Console.WriteLine("plotting graphs splitted by distance");
                 var idx = Array.FindIndex(args, x => x == "--split");
                 var lenght = int.Parse(args[idx + 1]);
                 var success = true;
                 var start = 0;
                 do {
+                    Console.WriteLine("plotting {0} - {1}", start / 1000, (start + lenght) / 1000);
                     success = GraphWriter.WriteDistanceSlice(args[0], args[1], start, start + lenght);
                     start += lenght;
                 } while (success);
+                Console.WriteLine("plotting full cycle");
                 GraphWriter.Write(args[0], args[1]);
+                Console.WriteLine("done");
+                return;
             }
+            Console.WriteLine("plotting graphs...");
             GraphWriter.Write(args[0], args[1]);
+            Console.WriteLine("done");
         }
     }
 }
\ No newline at end of file
diff --git a/VectoCoreTest/Utils/GraphWriter.cs b/VectoCoreTest/Utils/GraphWriter.cs
index cda940f97b..4c62b9881a 100644
--- a/VectoCoreTest/Utils/GraphWriter.cs
+++ b/VectoCoreTest/Utils/GraphWriter.cs
@@ -91,6 +91,25 @@ namespace TUGraz.VectoCore.Tests.Utils
                     if (yfield == ModalResultField.v_act) {
                         var y3 = LoadData(modDataV3, ModalResultField.v_targ.GetName());
                         var series3 = CreateSeries("v_target", legend, chartArea, chart, Color.Green, x, y3);
+
+                        var grad = LoadData(modDataV3, ModalResultField.grad.GetName());
+
+                        chartArea.AxisY2.Enabled = AxisEnabled.True;
+                        chartArea.AxisY2.Title = "gradient [%]";
+                        chartArea.AxisY2.TitleFont = AxisTitleFont;
+                        chartArea.AxisY2.LabelStyle.Font = AxisLabelFont;
+                        chartArea.AxisY2.LabelAutoFitStyle = LabelAutoFitStyles.None;
+                        chartArea.AxisY2.MinorGrid.Enabled = false;
+                        chartArea.AxisY2.MajorGrid.Enabled = false;
+                        var max = Math.Max(-Math.Round(grad.Min() * 2), Math.Round(grad.Max() * 2));
+                        //chartArea.AxisY2.si
+                        //chartArea.AxisY2.Minimum = -max;
+                        //chartArea.AxisY2.Maximum = max;
+                        chartArea.AxisY2.RoundAxisValues();
+                        chartArea.AxisY2.Interval = Math.Round(max / 5);
+
+                        var seriesGrad = CreateSeries("Gradient", legend, chartArea, chart, Color.Coral, x, grad);
+                        seriesGrad.YAxisType = AxisType.Secondary;
                     }
 
                     var series1 = CreateSeries(string.Format("Vecto 3 - {0}", yfield), legend, chartArea, chart,
@@ -197,16 +216,34 @@ namespace TUGraz.VectoCore.Tests.Utils
                 if (yfield == ModalResultField.v_act) {
                     var y3 = LoadData(modDataV3, ModalResultField.v_targ.GetName());
                     var series3 = CreateSeries("v_target", legend, chartArea, chart, Color.Green, x, y3);
+
+                    var grad = LoadData(modDataV3, ModalResultField.grad.GetName());
+
+                    chartArea.AxisY2.Enabled = AxisEnabled.True;
+                    chartArea.AxisY2.Title = "gradient [%]";
+                    chartArea.AxisY2.TitleFont = AxisTitleFont;
+                    chartArea.AxisY2.LabelStyle.Font = AxisLabelFont;
+                    chartArea.AxisY2.LabelAutoFitStyle = LabelAutoFitStyles.None;
+                    chartArea.AxisY2.MinorGrid.Enabled = false;
+                    chartArea.AxisY2.MajorGrid.Enabled = false;
+                    var max = Math.Max(-Math.Round(grad.Min() * 2), Math.Round(grad.Max() * 2));
+                    //chartArea.AxisY2.si
+                    chartArea.AxisY2.Minimum = -max;
+                    chartArea.AxisY2.Maximum = max;
+                    chartArea.AxisY2.RoundAxisValues();
+
+                    var seriesGrad = CreateSeries("Gradient", legend, chartArea, chart, Color.Coral, x, grad);
+                    seriesGrad.YAxisType = AxisType.Secondary;
                 }
 
+
                 var series1 = CreateSeries(string.Format("Vecto 3 - {0}", yfield), legend, chartArea, chart,
                     Color.Blue, x, y);
 
                 if (fileNameV22 != null) {
                     var y2 = LoadData(modDataV22, yfield.GetName());
                     var series2 = CreateSeries(string.Format("Vecto 2.2 - {0}", yfield), legend, chartArea, chart,
-                        Color.Red, x2,
-                        y2);
+                        Color.Red, x2, y2);
                 }
 
                 PositionChartArea(chartArea, titleHeight, i, yfields.Count());
@@ -244,14 +281,6 @@ namespace TUGraz.VectoCore.Tests.Utils
                 .ToArray();
         }
 
-        //private static double[] LoadData(DataView modDataV3, string field)
-        //{
-        //    return modDataV3.Rows.Cast<DataRow>()
-        //        .Select(v => v.Field<string>(field).Length == 0
-        //            ? Double.NaN
-        //            : v.Field<string>(field).ToDouble())
-        //        .ToArray();
-        //}
 
         private static void AlignChart(Chart chart, string chartToAlign, string chartToAlignWith)
         {
-- 
GitLab