Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.cs	(revision 14473)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.cs	(revision 14474)
@@ -62,13 +62,9 @@
       } else {
         dt.VisualProperties.Title = variableName;
-        //var valuesPerClass = row.Values.Zip(Classification, (value, @class) => new { value, @class })
-        //                        .GroupBy(x => x.@class)
-        //                        .ToDictionary(x => x.Key, x => x.Select(v => v.value));
-        var valuesPerClass = row.Values.Select((i, index) => new { i, j = Classification.ToList()[index] })
-                                       .GroupBy((x) => x.j)
-                                       .ToDictionary(x => x.Key, x => x.Select(v => v.i)
-                                       .ToList());
+        var valuesPerClass = row.Values.Zip(Classification, (value, @class) => new { value, @class })
+                                .GroupBy(x => x.@class)
+                                .ToDictionary(x => x.Key, x => x.Select(v => v.value));
         foreach (var entry in valuesPerClass) {
-          var classRow = new DataRow(entry.Key.ToString());
+          var classRow = new DataRow(string.Format("{0} ({1})", classifierComboBox.SelectedItem, entry.Key));
           classRow.VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Histogram;
           classRow.Values.AddRange(entry.Value);
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotSingleView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotSingleView.cs	(revision 14473)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/ScatterPlotSingleView.cs	(revision 14474)
@@ -71,7 +71,4 @@
           comboBoxGroup.SelectedIndex = 0;
           UpdateScatterPlot();
-          if (scatterPlotControl.Content != null)
-            foreach (var row in scatterPlotControl.Content.Rows)
-              row.VisualProperties.PointSize = 6;
         }
       }
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/ScatterPlotContent.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/ScatterPlotContent.cs	(revision 14473)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Content/ScatterPlotContent.cs	(revision 14474)
@@ -25,4 +25,5 @@
 using HeuristicLab.Analysis;
 using HeuristicLab.Common;
+using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Visualization.ChartControlsExtensions;
 
@@ -38,5 +39,5 @@
     }
 
-    public ScatterPlot CreateScatterPlot(string variableNameX, string variableNameY, string variableNameColor = "-") {
+    public ScatterPlot CreateScatterPlot(string variableNameX, string variableNameY, string variableNameGroup = "-") {
       ScatterPlot scatterPlot = new ScatterPlot();
 
@@ -60,5 +61,5 @@
       } catch (ArgumentOutOfRangeException) { } // missing values lead to NaNs
 
-      if (variableNameColor == null || variableNameColor == "-") {
+      if (variableNameGroup == null || variableNameGroup == "-") {
         List<Point2D<double>> points = new List<Point2D<double>>();
 
@@ -68,22 +69,21 @@
         }
 
-        ScatterPlotDataRow scdr = new ScatterPlotDataRow(variableNameX + " - " + variableNameY, "", points);
+        ScatterPlotDataRow scdr = new ScatterPlotDataRow(variableNameX + " - " + variableNameY, "", points) {
+          VisualProperties = { PointSize = 6 }
+        };
         scdr.VisualProperties.IsVisibleInLegend = false;
         scatterPlot.Rows.Add(scdr);
 
       } else {
-        var colorValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameColor));
-        var data = xValues.Zip(yValues, (x, y) => new { x, y }).Zip(colorValues, (v, c) => new { v.x, v.y, c }).ToList();
-        var gradients = ColorGradient.Colors;
-        int curGradient = 0;
-        int numColors = colorValues.Distinct().Count();
-        foreach (var colorValue in colorValues.Distinct()) {
-          var values = data.Where(x => x.c == colorValue);
+        var groupValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameGroup));
+        var data = xValues.Zip(yValues, (x, y) => new { x, y }).Zip(groupValues, (v, c) => new { v.x, v.y, c }).ToList();
+        foreach (var groupValue in groupValues.Distinct()) {
+          var values = data.Where(x => x.c == groupValue);
           var row = new ScatterPlotDataRow(
-            variableNameX + " - " + variableNameY + " (" + colorValue + ")",
+            variableNameGroup + " (" + groupValue + ")",
             "",
-            values.Select(v => new Point2D<double>(v.x, v.y)),
-            new ScatterPlotDataRowVisualProperties() { Color = gradients[curGradient] });
-          curGradient += gradients.Count / numColors;
+            values.Select(v => new Point2D<double>(v.x, v.y))) {
+            VisualProperties = { PointSize = 6 }
+          };
           scatterPlot.Rows.Add(row);
         }
@@ -91,4 +91,21 @@
       return scatterPlot;
     }
+
+    public DataRow GetCorrelationRow(string variableNameX, string variableNameY) {
+      var xValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameX));
+      var yValues = PreprocessingData.GetValues<double>(PreprocessingData.GetColumnIndex(variableNameY));
+
+      double k, d;
+      OnlineCalculatorError err;
+      OnlineLinearScalingParameterCalculator.Calculate(xValues, yValues, out k, out d, out err);
+      double p = OnlinePearsonsRCalculator.Calculate(xValues, yValues, out err);
+
+      var data = new double[xValues.Count];
+      for (int i = 0; i < xValues.Count; i++) {
+        data[i]= k * i + d;
+      }
+
+      return new DataRow(string.Format("Correlation (R²={0})", p*p), "", data);
+    }
   }
 }
