From cfaf8e6a594d4328182f9f25ec85ac7650779dba Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 20 Jan 2022 13:16:33 +0100 Subject: [PATCH] FeatureVectorCalculatore bug fix : case when complete curve is below zero and fromZero == true --- FeatureVectorCalculator/SignalChart.cs | 36 +++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/FeatureVectorCalculator/SignalChart.cs b/FeatureVectorCalculator/SignalChart.cs index d811a7a05..645a52de4 100644 --- a/FeatureVectorCalculator/SignalChart.cs +++ b/FeatureVectorCalculator/SignalChart.cs @@ -55,12 +55,42 @@ namespace FeatureVectorCalculator // cl.ToPosition = Math.Log10(xs[j] / spacer); // chArea.AxisX.CustomLabels.Add(cl); // } + chArea.AxisY.Title = captionY; chArea.AxisY.IsLogarithmic = false; chArea.AxisY.IsLabelAutoFit = true; - chArea.AxisY.IsStartedFromZero = fromZero; - chArea.AxisY.Minimum = chArea.AxisY.IsStartedFromZero ? 0 : minY; - chArea.AxisY.Maximum = 1.1 * maxY; + + if (!fromZero) + { + /// fromZero = false + chArea.AxisY.IsStartedFromZero = false; + float diff = maxY - minY; + chArea.AxisY.Minimum = minY - 0.05 * diff; + chArea.AxisY.Maximum = maxY + 0.05 * diff; + } + else if (minY >= 0) + { + /// fromZero = true, All points are above zero + chArea.AxisY.IsStartedFromZero = true; + chArea.AxisY.Minimum = 0; + chArea.AxisY.Maximum = 1.05 * maxY; + } + else if (maxY <= 0) + { + /// fromZero = true, All points are below zero + chArea.AxisY.IsStartedFromZero = true; + chArea.AxisY.Minimum = 1.05 * minY; + chArea.AxisY.Maximum = 0; + } + else + { + /// Points are both below and above zero + chArea.AxisY.IsStartedFromZero = false; + float diff = maxY - minY; + chArea.AxisY.Minimum = minY - 0.05 * diff; + chArea.AxisY.Maximum = maxY + 0.05 * diff; + } + if (chArea.AxisY.Maximum == chArea.AxisY.Minimum) { chArea.AxisY.Maximum = chArea.AxisY.Maximum + 1;