Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/CrossoverPerformanceAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/CrossoverPerformanceAnalyzer.cs	(revision 8510)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/CrossoverPerformanceAnalyzer.cs	(revision 8511)
@@ -128,7 +128,7 @@
       Parameters.Add(new ValueParameter<SingleObjectiveSolutionSimilarityCalculator>("SimilarityCalculator"));
 
-      plotHelper = new ScatterPlotHelper();
-      childDiversityHelper = new ScatterPlotHelper();
-      parentDiversityHelper = new ScatterPlotHelper();
+      plotHelper = new ScatterPlotHelper(false, true);
+      childDiversityHelper = new ScatterPlotHelper(false, true);
+      parentDiversityHelper = new ScatterPlotHelper(false, true);
       performanceHelper = new DataTableHelper();
       successHelper = new DataTableHelper();
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs	(revision 8510)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/MutationPerformanceAnalyzer.cs	(revision 8511)
@@ -112,6 +112,6 @@
       PermutationAfterMutationParameter.ActualName = "TSPTour";
 
-      diversityPlotHelper = new ScatterPlotHelper();
-      qualityPlotHelper = new ScatterPlotHelper();
+      diversityPlotHelper = new ScatterPlotHelper(false, true);
+      qualityPlotHelper = new ScatterPlotHelper(false, true);
       avgDataTableHelper = new DataTableHelper();
     }
Index: /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/ScatterPlotHelper.cs
===================================================================
--- /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/ScatterPlotHelper.cs	(revision 8510)
+++ /branches/HeuristicLab.Analysis.AlgorithmBehavior/HeuristicLab.Analysis.AlgorithmBehavior.Analyzers/3.3/ScatterPlotHelper.cs	(revision 8511)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -39,4 +40,12 @@
     [Storable]
     private string yAxisTitle;
+    [Storable]
+    public bool StoreHistory { get; set; }
+    [Storable]
+    public bool CreateDataTable { get; set; }
+    [Storable]
+    public DataTableHelper dataTableHelper;
+    [Storable]
+    private string lastRowName;
 
     [Storable]
@@ -55,7 +64,23 @@
       xAxisTitle = original.xAxisTitle;
       yAxisTitle = original.yAxisTitle;
+      StoreHistory = original.StoreHistory;
       plot = (ScatterPlot)original.plot.Clone(cloner);
+      CreateDataTable = original.CreateDataTable;
+      if (original.dataTableHelper != null)
+        dataTableHelper = (DataTableHelper)original.dataTableHelper.Clone(cloner);
+      lastRowName = original.lastRowName;
     }
-    public ScatterPlotHelper() : base() { }
+
+    public ScatterPlotHelper()
+      : base() {
+      StoreHistory = true;
+      CreateDataTable = false;
+    }
+
+    public ScatterPlotHelper(bool storeHistory, bool createDataTable)
+      : base() {
+      StoreHistory = storeHistory;
+      CreateDataTable = createDataTable;
+    }
 
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -64,4 +89,11 @@
 
     public void InitializePlot(ResultCollection results, string chartName, string xAxisTitle, string yAxisTitle) {
+      if (CreateDataTable) {
+        if (dataTableHelper == null) {
+          dataTableHelper = new DataTableHelper();
+        }
+        dataTableHelper.InitializeChart(results, chartName + " Chart", yAxisTitle);
+      }
+
       if (!results.ContainsKey(chartName)) {
         this.chartName = chartName;
@@ -73,5 +105,6 @@
 
         results.Add(new Result(chartName, Plot));
-        results.Add(new Result(chartName + " History", new ScatterPlotHistory()));
+        if (StoreHistory)
+          results.Add(new Result(chartName + " History", new ScatterPlotHistory()));
       }
     }
@@ -79,5 +112,12 @@
     public void AddPoint(string rowName, Point2D<double> point) {
       if (!Plot.Rows.ContainsKey(rowName)) {
-        ((ScatterPlotHistory)resultsCol[chartName + " History"].Value).Add(Plot);
+        if (StoreHistory)
+          ((ScatterPlotHistory)resultsCol[chartName + " History"].Value).Add(Plot);
+
+        if (CreateDataTable && lastRowName != null && lastRowName != string.Empty) {
+          double avg = Plot.Rows[lastRowName].Points.Average(x => x.Y);
+          dataTableHelper.AddPoint(avg);
+        }
+
         Initialize();
         resultsCol[chartName].Value = Plot;
@@ -89,4 +129,5 @@
         row.VisualProperties.PointSize = 5;
         Plot.Rows.Add(row);
+        lastRowName = rowName;
       } else {
         Plot.Rows[rowName].Points.Add(point);
