From fbb69029c01f68fa7013d84c1a52d9eb40d3a42c Mon Sep 17 00:00:00 2001
From: tobiglaser <76131623+tobiglaser@users.noreply.github.com>
Date: Wed, 7 May 2025 13:36:31 +0200
Subject: [PATCH] better logarithmic scaling

---
 src/control.cpp | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/control.cpp b/src/control.cpp
index 382baba..92bdd58 100644
--- a/src/control.cpp
+++ b/src/control.cpp
@@ -507,7 +507,13 @@ void Control::resizeAxes(int plot)
         {
             if (logAxis)
             {
-                axis->setRange(std::max(0.0000001, 0.8 * minX), 1.2 * maxX);
+                minX = std::max(minX, 1E-16);
+                maxX = std::max(maxX, 1E-15);
+
+                double lower = floor(log10(minX));
+                double upper = ceil(log10(maxX));
+
+                axis->setRange(pow(10, lower), pow(10, upper));
             }
             else
             {
@@ -519,7 +525,13 @@ void Control::resizeAxes(int plot)
         {
             if (logAxis)
             {
-                axis->setRange(std::max(0.0000001, 0.8 * minY), 1.2 * maxY);
+                minY = std::max(minY, 1E-16);
+                maxY = std::max(maxY, 1E-15);
+
+                double lower = floor(log10(minY));
+                double upper = ceil(log10(maxY));
+
+                axis->setRange(pow(10, lower), pow(10, upper));
             }
             else
             {
@@ -618,7 +630,7 @@ void Control::setPlotScale(int plot, int x, int y)
             QLogValueAxis* newLogAxis = new QLogValueAxis();
             newLogAxis->setBase(10.0);
             newLogAxis->setMax(std::max(linAxis->max(), 0.1));
-            newLogAxis->setMin(std::max(linAxis->min(), 0.000001));
+            newLogAxis->setMin(std::max(linAxis->min(), (double)(1.0E-16)));
             newLogAxis->setVisible(linAxis->isVisible());
             newLogAxis->setTitleFont(linAxis->titleFont());
             newLogAxis->setTitleText(linAxis->titleText());
-- 
GitLab