Index: trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj	(revision 553)
+++ trunk/sources/HeuristicLab.CEDMA.Core/HeuristicLab.CEDMA.Core.csproj	(revision 554)
@@ -4,5 +4,5 @@
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
+    <ProductVersion>9.0.30729</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{C27DDF6C-84DF-45EF-B82F-57A28DD51166}</ProjectGuid>
Index: trunk/sources/HeuristicLab.CEDMA.Core/ResultListView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/ResultListView.Designer.cs	(revision 553)
+++ trunk/sources/HeuristicLab.CEDMA.Core/ResultListView.Designer.cs	(revision 554)
@@ -29,4 +29,10 @@
       this.yAxisLabel = new System.Windows.Forms.Label();
       this.yAxisComboBox = new System.Windows.Forms.ComboBox();
+      this.yTrackBar = new System.Windows.Forms.TrackBar();
+      this.xTrackBar = new System.Windows.Forms.TrackBar();
+      this.xJitterlabel = new System.Windows.Forms.Label();
+      this.yJitterLabel = new System.Windows.Forms.Label();
+      ((System.ComponentModel.ISupportInitialize)(this.yTrackBar)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.xTrackBar)).BeginInit();
       this.SuspendLayout();
       // 
@@ -48,5 +54,5 @@
       this.xAxisLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.xAxisLabel.AutoSize = true;
-      this.xAxisLabel.Location = new System.Drawing.Point(305, 429);
+      this.xAxisLabel.Location = new System.Drawing.Point(197, 429);
       this.xAxisLabel.Name = "xAxisLabel";
       this.xAxisLabel.Size = new System.Drawing.Size(15, 13);
@@ -58,5 +64,5 @@
       this.xAxisComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.xAxisComboBox.FormattingEnabled = true;
-      this.xAxisComboBox.Location = new System.Drawing.Point(326, 426);
+      this.xAxisComboBox.Location = new System.Drawing.Point(218, 426);
       this.xAxisComboBox.Name = "xAxisComboBox";
       this.xAxisComboBox.Size = new System.Drawing.Size(121, 21);
@@ -82,8 +88,51 @@
       this.yAxisComboBox.SelectedIndexChanged += new System.EventHandler(this.yAxisComboBox_SelectedIndexChanged);
       // 
-      // ResultView
+      // yTrackBar
+      // 
+      this.yTrackBar.Location = new System.Drawing.Point(186, 3);
+      this.yTrackBar.Maximum = 100;
+      this.yTrackBar.Name = "yTrackBar";
+      this.yTrackBar.Size = new System.Drawing.Size(60, 45);
+      this.yTrackBar.TabIndex = 10;
+      this.yTrackBar.TickStyle = System.Windows.Forms.TickStyle.None;
+      this.yTrackBar.ValueChanged += new System.EventHandler(this.yTrackBar_ValueChanged);
+      // 
+      // xTrackBar
+      // 
+      this.xTrackBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.xTrackBar.Location = new System.Drawing.Point(387, 426);
+      this.xTrackBar.Maximum = 100;
+      this.xTrackBar.Name = "xTrackBar";
+      this.xTrackBar.Size = new System.Drawing.Size(60, 45);
+      this.xTrackBar.TabIndex = 11;
+      this.xTrackBar.TickStyle = System.Windows.Forms.TickStyle.None;
+      this.xTrackBar.ValueChanged += new System.EventHandler(this.xTrackBar_ValueChanged);
+      // 
+      // xJitterlabel
+      // 
+      this.xJitterlabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.xJitterlabel.AutoSize = true;
+      this.xJitterlabel.Location = new System.Drawing.Point(352, 429);
+      this.xJitterlabel.Name = "xJitterlabel";
+      this.xJitterlabel.Size = new System.Drawing.Size(29, 13);
+      this.xJitterlabel.TabIndex = 12;
+      this.xJitterlabel.Text = "jitter:";
+      // 
+      // yJitterLabel
+      // 
+      this.yJitterLabel.AutoSize = true;
+      this.yJitterLabel.Location = new System.Drawing.Point(151, 6);
+      this.yJitterLabel.Name = "yJitterLabel";
+      this.yJitterLabel.Size = new System.Drawing.Size(29, 13);
+      this.yJitterLabel.TabIndex = 13;
+      this.yJitterLabel.Text = "jitter:";
+      // 
+      // ResultListView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.yJitterLabel);
+      this.Controls.Add(this.xJitterlabel);
+      this.Controls.Add(this.xTrackBar);
       this.Controls.Add(this.dataChart);
       this.Controls.Add(this.xAxisLabel);
@@ -91,6 +140,9 @@
       this.Controls.Add(this.yAxisLabel);
       this.Controls.Add(this.yAxisComboBox);
-      this.Name = "ResultView";
+      this.Controls.Add(this.yTrackBar);
+      this.Name = "ResultListView";
       this.Size = new System.Drawing.Size(450, 450);
+      ((System.ComponentModel.ISupportInitialize)(this.yTrackBar)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.xTrackBar)).EndInit();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -105,4 +157,8 @@
     private System.Windows.Forms.Label yAxisLabel;
     private System.Windows.Forms.ComboBox yAxisComboBox;
+    private System.Windows.Forms.TrackBar yTrackBar;
+    private System.Windows.Forms.TrackBar xTrackBar;
+    private System.Windows.Forms.Label xJitterlabel;
+    private System.Windows.Forms.Label yJitterLabel;
   }
 }
Index: trunk/sources/HeuristicLab.CEDMA.Core/ResultListView.cs
===================================================================
--- trunk/sources/HeuristicLab.CEDMA.Core/ResultListView.cs	(revision 553)
+++ trunk/sources/HeuristicLab.CEDMA.Core/ResultListView.cs	(revision 554)
@@ -14,4 +14,8 @@
     private ResultList results;
     private const string FREQUENCY = "<Frequency>";
+    private double xJitterFactor = 0.0;
+    private double yJitterFactor = 0.0;
+    private double maxXJitterPercent = .1;
+    private double maxYJitterPercent = .1;
 
     public ResultListView(ResultList results) {
@@ -25,67 +29,103 @@
 
     private void yAxisComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      yJitterFactor = 0.0;
+      yTrackBar.Value = 0;
       UpdateChart();
     }
 
     private void xAxisComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      xJitterFactor = 0.0;
+      xTrackBar.Value = 0;
       UpdateChart();
     }
 
     private void UpdateChart() {
+      if(xAxisComboBox.SelectedItem == null || yAxisComboBox.SelectedItem == null) return;
+      if(yAxisComboBox.SelectedItem.Equals(FREQUENCY)) {
+        CreateHistogramChart();
+      } else {
+        CreateScatterplot();
+      }
+    }
+
+    private void CreateScatterplot() {
       double minX = double.PositiveInfinity;
       double minY = double.PositiveInfinity;
       double maxX = double.NegativeInfinity;
       double maxY = double.NegativeInfinity;
-      if(xAxisComboBox.SelectedItem == null || yAxisComboBox.SelectedItem == null) return;
-      if(yAxisComboBox.SelectedItem.Equals(FREQUENCY)) {
-        Color curCol = Color.Blue;
-        Pen p = new Pen(curCol);
-        SolidBrush b = new SolidBrush(curCol);
-        // frequency
-        dataChart.Chart = new HeuristicLab.Charting.Data.Datachart(0, 0, 100, 100);
-        dataChart.Chart.UpdateEnabled = false;
-        dataChart.Chart.Group.Add(new Axis(dataChart.Chart, 0, 0, AxisType.Both));
-        Histogram h = results.GetHistogram((string)xAxisComboBox.SelectedItem);
-        for(int i = 0; i < h.Buckets; i++) {
-          double lower = h.LowerValue(i);
-          double upper = h.UpperValue(i);
-          int freq = h.Frequency(i);
-          if(lower < minX) minX = lower;
-          if(upper > maxX) maxX = upper;
-          if(freq > maxY) maxY = freq;
-          dataChart.Chart.AddDataRow(HeuristicLab.Charting.Data.DataRowType.Bars, p, b);
-          dataChart.Chart.AddDataPoint(0, lower, 0);
-          dataChart.Chart.AddDataPoint(0, upper, freq);
+
+      xTrackBar.Enabled = true;
+      yTrackBar.Enabled = true;
+      Random random = new Random();
+      Color curCol = Color.FromArgb(30, Color.Blue);
+      Pen p = new Pen(curCol);
+      SolidBrush b = new SolidBrush(curCol);
+      IList<double> xs = results.GetValues((string)xAxisComboBox.SelectedItem);
+      IList<double> ys = results.GetValues((string)yAxisComboBox.SelectedItem);
+      dataChart.Chart = new HeuristicLab.Charting.Data.Datachart(0, 0, 100, 100);
+      dataChart.Chart.UpdateEnabled = false;
+      dataChart.Chart.Group.Add(new Axis(dataChart.Chart, 0, 0, AxisType.Both));
+      dataChart.Chart.AddDataRow(HeuristicLab.Charting.Data.DataRowType.Points, p, b);
+      for(int i = 0; i < xs.Count; i++) {
+        double x = xs[i] + (random.NextDouble() * 2.0 - 1.0) * xJitterFactor;
+        double y = ys[i] + (random.NextDouble() * 2.0 - 1.0) * yJitterFactor;
+        if(double.IsInfinity(x) || x == double.MaxValue || x == double.MinValue) x = double.NaN;
+        if(double.IsInfinity(y) || y == double.MaxValue || y == double.MinValue) y = double.NaN;
+        if(!double.IsNaN(x) && !double.IsNaN(y)) {
+          dataChart.Chart.AddDataPoint(0, x, y);
+          if(x > maxX) maxX = x;
+          if(y > maxY) maxY = y;
+          if(x < minX) minX = x;
+          if(y < minY) minY = y;
         }
-        minY = 0;
+      }
+      dataChart.Chart.UpdateEnabled = true;
+      if(minX<maxX && minY<maxY) dataChart.Chart.ZoomIn(minX, minY, maxX, maxY);
+    }
 
-        dataChart.Chart.UpdateEnabled = true;
-      } else {
-        Color curCol = Color.FromArgb(30, Color.Blue);
-        Pen p = new Pen(curCol);
-        SolidBrush b = new SolidBrush(curCol);
-        IList<double> xs = results.GetValues((string)xAxisComboBox.SelectedItem);
-        IList<double> ys = results.GetValues((string)yAxisComboBox.SelectedItem);
-        dataChart.Chart = new HeuristicLab.Charting.Data.Datachart(0, 0, 100, 100);
-        dataChart.Chart.UpdateEnabled = false;
-        dataChart.Chart.Group.Add(new Axis(dataChart.Chart, 0, 0, AxisType.Both));
-        dataChart.Chart.AddDataRow(HeuristicLab.Charting.Data.DataRowType.Points, p, b);
-        for(int i = 0; i < xs.Count; i++) {
-          double x = xs[i];
-          double y = ys[i];
-          if(double.IsInfinity(x) || x == double.MaxValue || x == double.MinValue) x = double.NaN;
-          if(double.IsInfinity(y) || y == double.MaxValue || y == double.MinValue) y = double.NaN;
-          if(!double.IsNaN(x) && !double.IsNaN(y)) {
-            dataChart.Chart.AddDataPoint(0, x, y);
-            if(x > maxX) maxX = x;
-            if(y > maxY) maxY = y;
-            if(x < minX) minX = x;
-            if(y < minY) minY = y;
-          }
-        }
-        dataChart.Chart.UpdateEnabled = true;
+    private void CreateHistogramChart() {
+      double minX = double.PositiveInfinity;
+      double minY = double.PositiveInfinity;
+      double maxX = double.NegativeInfinity;
+      double maxY = double.NegativeInfinity;
+
+      xTrackBar.Enabled = false;
+      yTrackBar.Enabled = false;
+      Color curCol = Color.Blue;
+      Pen p = new Pen(curCol);
+      SolidBrush b = new SolidBrush(curCol);
+      // frequency
+      dataChart.Chart = new HeuristicLab.Charting.Data.Datachart(0, 0, 100, 100);
+      dataChart.Chart.UpdateEnabled = false;
+      dataChart.Chart.Group.Add(new Axis(dataChart.Chart, 0, 0, AxisType.Both));
+      Histogram h = results.GetHistogram((string)xAxisComboBox.SelectedItem);
+      for(int i = 0; i < h.Buckets; i++) {
+        double lower = h.LowerValue(i);
+        double upper = h.UpperValue(i);
+        int freq = h.Frequency(i);
+        if(lower < minX) minX = lower;
+        if(upper > maxX) maxX = upper;
+        if(freq > maxY) maxY = freq;
+        dataChart.Chart.AddDataRow(HeuristicLab.Charting.Data.DataRowType.Bars, p, b);
+        dataChart.Chart.AddDataPoint(0, lower, 0);
+        dataChart.Chart.AddDataPoint(0, upper, freq);
       }
+      minY = 0;
+      dataChart.Chart.UpdateEnabled = true;
+      if(minX < maxX && minY < maxY) dataChart.Chart.ZoomIn(minX, minY, maxX, maxY);
+    }
 
-      dataChart.Chart.ZoomIn(minX, minY, maxX, maxY);
+    private void yTrackBar_ValueChanged(object sender, EventArgs e) {
+      if(dataChart.Chart != null) {
+        yJitterFactor = yTrackBar.Value / 100.0 * maxYJitterPercent * dataChart.Chart.Size.Height;
+      }
+      UpdateChart();
+    }
+
+    private void xTrackBar_ValueChanged(object sender, EventArgs e) {
+      if(dataChart.Chart != null) {
+        xJitterFactor = xTrackBar.Value / 100.0 * maxXJitterPercent * dataChart.Chart.Size.Width;
+      }
+      UpdateChart();
     }
   }
