Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionLineChartView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionLineChartView.cs	(revision 14007)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionLineChartView.cs	(revision 14008)
@@ -26,4 +26,5 @@
 using System.Windows.Forms.DataVisualization.Charting;
 using HeuristicLab.MainForm;
+using HeuristicLab.Visualization.ChartControlsExtensions;
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
@@ -96,4 +97,23 @@
         this.ToggleSeriesData(this.chart.Series[ESTIMATEDVALUES_ALL_SERIES_NAME]);
 
+        // set the y-axis bounds
+        var axisY = this.chart.ChartAreas[0].AxisY;
+        double min = double.MaxValue, max = double.MinValue;
+        foreach (var point in chart.Series.SelectMany(x => x.Points)) {
+          if (!point.YValues.Any() || double.IsInfinity(point.YValues[0]) || double.IsNaN(point.YValues[0]))
+            continue;
+          var y = point.YValues[0];
+          if (y < min)
+            min = y;
+          if (y > max)
+            max = y;
+        }
+
+        double axisMin, axisMax, axisInterval;
+        ChartUtil.CalculateOptimalAxisInterval(min, max, out axisMin, out axisMax, out axisInterval);
+        axisY.Minimum = axisMin;
+        axisY.Maximum = axisMax;
+        axisY.Interval = axisInterval;
+
         UpdateCursorInterval();
         this.UpdateStripLines();
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionScatterPlotView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionScatterPlotView.cs	(revision 14007)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionScatterPlotView.cs	(revision 14008)
@@ -171,5 +171,5 @@
 
         double axisMin, axisMax, axisInterval;
-        ChartUtil.CalculateAxisInterval(min, max, 5, out axisMin, out axisMax, out axisInterval);
+        ChartUtil.CalculateOptimalAxisInterval(min, max, out axisMin, out axisMax, out axisInterval);
         this.chart.ChartAreas[0].AxisX.Maximum = axisMax;
         this.chart.ChartAreas[0].AxisX.Minimum = axisMin;
Index: /trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ChartUtil.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ChartUtil.cs	(revision 14007)
+++ /trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ChartUtil.cs	(revision 14008)
@@ -43,4 +43,27 @@
     }
 
+    // this method tries to find an axis interval with as few fractional digits as possible (because it looks nicer)
+    // we only try between 3 and 5 ticks (inclusive) because it wouldn't make sense to exceed this interval
+    public static void CalculateOptimalAxisInterval(double min, double max, out double axisMin, out double axisMax, out double axisInterval) {
+      CalculateAxisInterval(min, max, 5, out axisMin, out axisMax, out axisInterval);
+      int bestLsp = int.MaxValue;
+      for (int ticks = 3; ticks <= 5; ++ticks) {
+        double aMin, aMax, aInterval;
+        CalculateAxisInterval(min, max, ticks, out aMin, out aMax, out aInterval);
+        var x = aInterval;
+        int lsp = 0; // position of the least significant fractional digit
+        while (x - Math.Floor(x) > 0) {
+          ++lsp;
+          x *= 10;
+        }
+        if (lsp <= bestLsp) {
+          axisMin = aMin;
+          axisMax = aMax;
+          axisInterval = aInterval;
+          bestLsp = lsp;
+        }
+      }
+    }
+
     private static int Decimals(this double x) {
       if (x.IsAlmost(0) || double.IsInfinity(x) || double.IsNaN(x))
@@ -48,5 +71,5 @@
 
       var v = Math.Abs(x);
-      int d = 0;
+      int d = 1;
       while (v < 1) {
         v *= 10;
