Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.Designer.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.Designer.cs	(revision 15068)
@@ -49,8 +49,6 @@
       this.colorButton = new System.Windows.Forms.Button();
       this.startIndexZeroCheckBox = new System.Windows.Forms.CheckBox();
-      this.binsNumericUpDown = new System.Windows.Forms.NumericUpDown();
       this.label1 = new System.Windows.Forms.Label();
       this.label2 = new System.Windows.Forms.Label();
-      this.label3 = new System.Windows.Forms.Label();
       this.commonGroupBox = new System.Windows.Forms.GroupBox();
       this.clearColorButton = new System.Windows.Forms.Button();
@@ -68,9 +66,4 @@
       this.label6 = new System.Windows.Forms.Label();
       this.label9 = new System.Windows.Forms.Label();
-      this.histoGramGroupBox = new System.Windows.Forms.GroupBox();
-      this.binsExactRadioButton = new System.Windows.Forms.RadioButton();
-      this.binsApproximatelyRadioButton = new System.Windows.Forms.RadioButton();
-      this.label11 = new System.Windows.Forms.Label();
-      this.aggregationComboBox = new System.Windows.Forms.ComboBox();
       this.lineChartGroupBox = new System.Windows.Forms.GroupBox();
       this.lineWidthNumericUpDown = new System.Windows.Forms.NumericUpDown();
@@ -79,10 +72,8 @@
       this.lineStyleComboBox = new System.Windows.Forms.ComboBox();
       this.label8 = new System.Windows.Forms.Label();
-      ((System.ComponentModel.ISupportInitialize)(this.binsNumericUpDown)).BeginInit();
       this.commonGroupBox.SuspendLayout();
       this.axisGroupBox.SuspendLayout();
       this.panel2.SuspendLayout();
       this.panel1.SuspendLayout();
-      this.histoGramGroupBox.SuspendLayout();
       this.lineChartGroupBox.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.lineWidthNumericUpDown)).BeginInit();
@@ -91,5 +82,5 @@
       // chartTypeComboBox
       // 
-      this.chartTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.chartTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.chartTypeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@@ -126,24 +117,4 @@
       this.startIndexZeroCheckBox.CheckedChanged += new System.EventHandler(this.startIndexZeroCheckBox_CheckedChanged);
       // 
-      // binsNumericUpDown
-      // 
-      this.binsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.binsNumericUpDown.Location = new System.Drawing.Point(82, 19);
-      this.binsNumericUpDown.Minimum = new decimal(new int[] {
-            1,
-            0,
-            0,
-            0});
-      this.binsNumericUpDown.Name = "binsNumericUpDown";
-      this.binsNumericUpDown.Size = new System.Drawing.Size(72, 20);
-      this.binsNumericUpDown.TabIndex = 1;
-      this.binsNumericUpDown.Value = new decimal(new int[] {
-            1,
-            0,
-            0,
-            0});
-      this.binsNumericUpDown.ValueChanged += new System.EventHandler(this.binsNumericUpDown_ValueChanged);
-      // 
       // label1
       // 
@@ -164,16 +135,7 @@
       this.label2.Text = "&Color:";
       // 
-      // label3
-      // 
-      this.label3.AutoSize = true;
-      this.label3.Location = new System.Drawing.Point(6, 21);
-      this.label3.Name = "label3";
-      this.label3.Size = new System.Drawing.Size(30, 13);
-      this.label3.TabIndex = 0;
-      this.label3.Text = "&Bins:";
-      // 
       // commonGroupBox
       // 
-      this.commonGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.commonGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.commonGroupBox.Controls.Add(this.clearColorButton);
@@ -232,5 +194,5 @@
       // displayNameTextBox
       // 
-      this.displayNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.displayNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.displayNameTextBox.Location = new System.Drawing.Point(102, 19);
@@ -242,6 +204,6 @@
       // axisGroupBox
       // 
-      this.axisGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
+      this.axisGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.axisGroupBox.Controls.Add(this.panel2);
@@ -258,5 +220,5 @@
       // panel2
       // 
-      this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.panel2.Controls.Add(this.yAxisSecondaryRadioButton);
@@ -293,5 +255,5 @@
       // panel1
       // 
-      this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.panel1.Controls.Add(this.xAxisPrimaryRadioButton);
@@ -353,71 +315,7 @@
       this.label9.Text = "&Name:";
       // 
-      // histoGramGroupBox
-      // 
-      this.histoGramGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.histoGramGroupBox.Controls.Add(this.binsExactRadioButton);
-      this.histoGramGroupBox.Controls.Add(this.binsApproximatelyRadioButton);
-      this.histoGramGroupBox.Controls.Add(this.binsNumericUpDown);
-      this.histoGramGroupBox.Controls.Add(this.label11);
-      this.histoGramGroupBox.Controls.Add(this.label3);
-      this.histoGramGroupBox.Controls.Add(this.aggregationComboBox);
-      this.histoGramGroupBox.Location = new System.Drawing.Point(0, 305);
-      this.histoGramGroupBox.Name = "histoGramGroupBox";
-      this.histoGramGroupBox.Size = new System.Drawing.Size(327, 75);
-      this.histoGramGroupBox.TabIndex = 2;
-      this.histoGramGroupBox.TabStop = false;
-      this.histoGramGroupBox.Text = "Histogram Properties";
-      // 
-      // binsExactRadioButton
-      // 
-      this.binsExactRadioButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.binsExactRadioButton.AutoSize = true;
-      this.binsExactRadioButton.Location = new System.Drawing.Point(269, 19);
-      this.binsExactRadioButton.Name = "binsExactRadioButton";
-      this.binsExactRadioButton.Size = new System.Drawing.Size(52, 17);
-      this.binsExactRadioButton.TabIndex = 3;
-      this.binsExactRadioButton.TabStop = true;
-      this.binsExactRadioButton.Text = "&Exact";
-      this.binsExactRadioButton.UseVisualStyleBackColor = true;
-      this.binsExactRadioButton.CheckedChanged += new System.EventHandler(this.binNumberRadioButton_CheckedChanged);
-      // 
-      // binsApproximatelyRadioButton
-      // 
-      this.binsApproximatelyRadioButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.binsApproximatelyRadioButton.AutoSize = true;
-      this.binsApproximatelyRadioButton.Location = new System.Drawing.Point(173, 19);
-      this.binsApproximatelyRadioButton.Name = "binsApproximatelyRadioButton";
-      this.binsApproximatelyRadioButton.Size = new System.Drawing.Size(90, 17);
-      this.binsApproximatelyRadioButton.TabIndex = 2;
-      this.binsApproximatelyRadioButton.TabStop = true;
-      this.binsApproximatelyRadioButton.Text = "&Approximately";
-      this.binsApproximatelyRadioButton.UseVisualStyleBackColor = true;
-      this.binsApproximatelyRadioButton.CheckedChanged += new System.EventHandler(this.binNumberRadioButton_CheckedChanged);
-      // 
-      // label11
-      // 
-      this.label11.AutoSize = true;
-      this.label11.Location = new System.Drawing.Point(6, 49);
-      this.label11.Name = "label11";
-      this.label11.Size = new System.Drawing.Size(67, 13);
-      this.label11.TabIndex = 0;
-      this.label11.Text = "Aggregation:";
-      // 
-      // aggregationComboBox
-      // 
-      this.aggregationComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.aggregationComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.aggregationComboBox.FormattingEnabled = true;
-      this.aggregationComboBox.Location = new System.Drawing.Point(82, 45);
-      this.aggregationComboBox.Name = "aggregationComboBox";
-      this.aggregationComboBox.Size = new System.Drawing.Size(239, 21);
-      this.aggregationComboBox.TabIndex = 3;
-      this.aggregationComboBox.SelectedValueChanged += new System.EventHandler(this.aggregationComboBox_SelectedValueChanged);
-      // 
       // lineChartGroupBox
       // 
-      this.lineChartGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.lineChartGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.lineChartGroupBox.Controls.Add(this.lineWidthNumericUpDown);
@@ -436,5 +334,5 @@
       // lineWidthNumericUpDown
       // 
-      this.lineWidthNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.lineWidthNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.lineWidthNumericUpDown.Location = new System.Drawing.Point(82, 66);
@@ -474,5 +372,5 @@
       // lineStyleComboBox
       // 
-      this.lineStyleComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.lineStyleComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.lineStyleComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@@ -497,9 +395,7 @@
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.Controls.Add(this.lineChartGroupBox);
-      this.Controls.Add(this.histoGramGroupBox);
       this.Controls.Add(this.commonGroupBox);
       this.Name = "DataRowVisualPropertiesControl";
-      this.Size = new System.Drawing.Size(327, 382);
-      ((System.ComponentModel.ISupportInitialize)(this.binsNumericUpDown)).EndInit();
+      this.Size = new System.Drawing.Size(327, 300);
       this.commonGroupBox.ResumeLayout(false);
       this.commonGroupBox.PerformLayout();
@@ -510,6 +406,4 @@
       this.panel1.ResumeLayout(false);
       this.panel1.PerformLayout();
-      this.histoGramGroupBox.ResumeLayout(false);
-      this.histoGramGroupBox.PerformLayout();
       this.lineChartGroupBox.ResumeLayout(false);
       this.lineChartGroupBox.PerformLayout();
@@ -525,10 +419,7 @@
     private System.Windows.Forms.Button colorButton;
     private System.Windows.Forms.CheckBox startIndexZeroCheckBox;
-    private System.Windows.Forms.NumericUpDown binsNumericUpDown;
     private System.Windows.Forms.Label label1;
     private System.Windows.Forms.Label label2;
-    private System.Windows.Forms.Label label3;
     private System.Windows.Forms.GroupBox commonGroupBox;
-    private System.Windows.Forms.GroupBox histoGramGroupBox;
     private System.Windows.Forms.RadioButton xAxisSecondaryRadioButton;
     private System.Windows.Forms.RadioButton yAxisSecondaryRadioButton;
@@ -540,6 +431,4 @@
     private System.Windows.Forms.Label label4;
     private System.Windows.Forms.Label label7;
-    private System.Windows.Forms.RadioButton binsExactRadioButton;
-    private System.Windows.Forms.RadioButton binsApproximatelyRadioButton;
     private System.Windows.Forms.ComboBox lineStyleComboBox;
     private System.Windows.Forms.Label label8;
@@ -552,6 +441,4 @@
     private System.Windows.Forms.Label label10;
     private System.Windows.Forms.CheckBox isVisibleInLegendCheckBox;
-    private System.Windows.Forms.Label label11;
-    private System.Windows.Forms.ComboBox aggregationComboBox;
     private System.Windows.Forms.Button clearColorButton;
   }
Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.cs	(revision 15068)
@@ -46,5 +46,4 @@
       chartTypeComboBox.DataSource = Enum.GetValues(typeof(DataRowVisualProperties.DataRowChartType));
       lineStyleComboBox.DataSource = Enum.GetValues(typeof(DataRowVisualProperties.DataRowLineStyle));
-      aggregationComboBox.DataSource = Enum.GetValues(typeof(DataRowVisualProperties.DataRowHistogramAggregation));
       clearColorButton.BackColor = Color.Transparent;
       clearColorButton.BackgroundImage = VSImageLibrary.Delete;
@@ -66,8 +65,4 @@
           startIndexZeroCheckBox.Checked = false;
           lineWidthNumericUpDown.Value = 1;
-          binsNumericUpDown.Value = 1;
-          binsApproximatelyRadioButton.Checked = false;
-          binsExactRadioButton.Checked = false;
-          aggregationComboBox.SelectedIndex = -1;
           displayNameTextBox.Text = String.Empty;
         } else {
@@ -91,12 +86,4 @@
             lineWidthNumericUpDown.Value = lineWidthNumericUpDown.Maximum;
           else lineWidthNumericUpDown.Value = Content.LineWidth;
-          if (Content.Bins < binsNumericUpDown.Minimum)
-            binsNumericUpDown.Value = binsNumericUpDown.Minimum;
-          else if (Content.Bins > binsNumericUpDown.Maximum)
-            binsNumericUpDown.Value = binsNumericUpDown.Maximum;
-          else binsNumericUpDown.Value = Content.Bins;
-          binsApproximatelyRadioButton.Checked = !Content.ExactBins;
-          binsExactRadioButton.Checked = Content.ExactBins;
-          aggregationComboBox.SelectedItem = Content.Aggregation;
           displayNameTextBox.Text = Content.DisplayName;
           isVisibleInLegendCheckBox.Checked = Content.IsVisibleInLegend;
@@ -110,5 +97,4 @@
       clearColorButton.Visible = Content != null && !Content.Color.IsEmpty;
       lineChartGroupBox.Enabled = Content != null && Content.ChartType == DataRowVisualProperties.DataRowChartType.Line;
-      histoGramGroupBox.Enabled = Content != null && Content.ChartType == DataRowVisualProperties.DataRowChartType.Histogram;
       isVisibleInLegendCheckBox.Enabled = Content != null;
     }
@@ -187,28 +173,4 @@
     }
 
-    private void binsNumericUpDown_ValueChanged(object sender, EventArgs e) {
-      if (!SuppressEvents && Content != null) {
-        Content.Bins = (int)binsNumericUpDown.Value;
-      }
-    }
-
-    private void binNumberRadioButton_CheckedChanged(object sender, EventArgs e) {
-      if (!SuppressEvents && Content != null) {
-        SuppressEvents = true;
-        try {
-          Content.ExactBins = binsExactRadioButton.Checked;
-        } finally { SuppressEvents = false; }
-      }
-    }
-
-    private void aggregationComboBox_SelectedValueChanged(object sender, EventArgs e) {
-      if (!SuppressEvents && Content != null) {
-        SuppressEvents = true;
-        try {
-          Content.Aggregation = (DataRowVisualProperties.DataRowHistogramAggregation)aggregationComboBox.SelectedValue;
-        } finally { SuppressEvents = false; }
-      }
-    }
-
     private void displayNameTextBox_Validated(object sender, EventArgs e) {
       if (!SuppressEvents && Content != null) {
Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 15068)
@@ -206,7 +206,7 @@
           break;
         case DataRowVisualProperties.DataRowChartType.Histogram:
-          bool stacked = row.VisualProperties.Aggregation == DataRowVisualProperties.DataRowHistogramAggregation.Stacked;
+          bool stacked = Content.VisualProperties.HistogramAggregation == DataTableVisualProperties.DataTableHistogramAggregation.Stacked;
           series.ChartType = stacked ? SeriesChartType.StackedColumn : SeriesChartType.Column;
-          bool sideBySide = row.VisualProperties.Aggregation == DataRowVisualProperties.DataRowHistogramAggregation.SideBySide;
+          bool sideBySide = Content.VisualProperties.HistogramAggregation == DataTableVisualProperties.DataTableHistogramAggregation.SideBySide;
           series.SetCustomProperty("DrawSideBySide", sideBySide ? "True" : "False");
           series.SetCustomProperty("PointWidth", "1");
@@ -330,5 +330,5 @@
     private bool RequiresTransparency(DataRow row) {
       return row.VisualProperties.ChartType == DataRowVisualProperties.DataRowChartType.Histogram
-             && row.VisualProperties.Aggregation == DataRowVisualProperties.DataRowHistogramAggregation.Overlapping;
+             && Content.VisualProperties.HistogramAggregation == DataTableVisualProperties.DataTableHistogramAggregation.Overlapping;
     }
 
@@ -349,4 +349,7 @@
         ConfigureChartArea(chart.ChartAreas[0]);
         RecalculateAxesScale(chart.ChartAreas[0]); // axes min/max could have changed
+        foreach (var row in Content.Rows.Where(r => r.VisualProperties.ChartType == DataRowVisualProperties.DataRowChartType.Histogram))
+          Row_VisualPropertiesChanged(row, EventArgs.Empty); // Histogram properties could have changed
+        chart.Update(); // side-by-side series are not always correctly displayed without an update
       }
     }
@@ -562,5 +565,5 @@
       switch (row.VisualProperties.ChartType) {
         case DataRowVisualProperties.DataRowChartType.Histogram:
-          // when a single histogram is updated, all histograms must be updated. otherwise the value ranges and bin sizes may not be equal.
+          // when a single histogram is updated, all histograms must be updated. otherwise the value ranges may not be equal.
           var histograms = Content.Rows
             .Where(r => r.VisualProperties.ChartType == DataRowVisualProperties.DataRowChartType.Histogram)
@@ -606,5 +609,5 @@
       if (!validValues.Any()) return;
 
-      int bins = histogramRows.Max(r => r.VisualProperties.Bins);
+      int bins = Content.VisualProperties.HistogramBins;
       decimal minValue = (decimal)validValues.Min();
       decimal maxValue = (decimal)validValues.Max();
@@ -616,5 +619,5 @@
       }
 
-      if (!histogramRows.Any(r => r.VisualProperties.ExactBins)) {
+      if (!Content.VisualProperties.HistogramExactBins) {
         intervalWidth = (decimal)HumanRoundRange((double)intervalWidth);
         minValue = Math.Floor(minValue / intervalWidth) * intervalWidth;
Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.Designer.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.Designer.cs	(revision 15068)
@@ -105,4 +105,12 @@
       this.label7 = new System.Windows.Forms.Label();
       this.label8 = new System.Windows.Forms.Label();
+      this.histogramTabPage = new System.Windows.Forms.TabPage();
+      this.histogramGroupBox = new System.Windows.Forms.GroupBox();
+      this.histogramBinsExactRadioButton = new System.Windows.Forms.RadioButton();
+      this.histogramBinsApproximatelyRadioButton = new System.Windows.Forms.RadioButton();
+      this.histogramBinsNumericUpDown = new System.Windows.Forms.NumericUpDown();
+      this.label16 = new System.Windows.Forms.Label();
+      this.label17 = new System.Windows.Forms.Label();
+      this.histogramAggregationComboBox = new System.Windows.Forms.ComboBox();
       this.titleTextBox = new System.Windows.Forms.TextBox();
       this.label15 = new System.Windows.Forms.Label();
@@ -131,4 +139,7 @@
       this.panel6.SuspendLayout();
       this.panel5.SuspendLayout();
+      this.histogramTabPage.SuspendLayout();
+      this.histogramGroupBox.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.histogramBinsNumericUpDown)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
@@ -489,4 +500,5 @@
       this.axisTabControl.Controls.Add(this.xAxisTabPage);
       this.axisTabControl.Controls.Add(this.yAxisTabPage);
+      this.axisTabControl.Controls.Add(this.histogramTabPage);
       this.axisTabControl.Location = new System.Drawing.Point(0, 84);
       this.axisTabControl.Name = "axisTabControl";
@@ -791,4 +803,107 @@
       this.label8.TabIndex = 2;
       this.label8.Text = "&Minimum:";
+      // 
+      // histogramTabPage
+      // 
+      this.histogramTabPage.Controls.Add(this.histogramGroupBox);
+      this.histogramTabPage.Location = new System.Drawing.Point(4, 22);
+      this.histogramTabPage.Name = "histogramTabPage";
+      this.histogramTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.histogramTabPage.Size = new System.Drawing.Size(447, 263);
+      this.histogramTabPage.TabIndex = 2;
+      this.histogramTabPage.Text = "Histogram";
+      this.histogramTabPage.UseVisualStyleBackColor = true;
+      // 
+      // histogramGroupBox
+      // 
+      this.histogramGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.histogramGroupBox.Controls.Add(this.histogramBinsExactRadioButton);
+      this.histogramGroupBox.Controls.Add(this.histogramBinsApproximatelyRadioButton);
+      this.histogramGroupBox.Controls.Add(this.histogramBinsNumericUpDown);
+      this.histogramGroupBox.Controls.Add(this.label16);
+      this.histogramGroupBox.Controls.Add(this.label17);
+      this.histogramGroupBox.Controls.Add(this.histogramAggregationComboBox);
+      this.histogramGroupBox.Location = new System.Drawing.Point(3, 3);
+      this.histogramGroupBox.Name = "histogramGroupBox";
+      this.histogramGroupBox.Size = new System.Drawing.Size(441, 75);
+      this.histogramGroupBox.TabIndex = 2;
+      this.histogramGroupBox.TabStop = false;
+      this.histogramGroupBox.Text = "Histogram Properties";
+      // 
+      // histogramBinsExactRadioButton
+      // 
+      this.histogramBinsExactRadioButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.histogramBinsExactRadioButton.AutoSize = true;
+      this.histogramBinsExactRadioButton.Location = new System.Drawing.Point(383, 19);
+      this.histogramBinsExactRadioButton.Name = "histogramBinsExactRadioButton";
+      this.histogramBinsExactRadioButton.Size = new System.Drawing.Size(52, 17);
+      this.histogramBinsExactRadioButton.TabIndex = 3;
+      this.histogramBinsExactRadioButton.TabStop = true;
+      this.histogramBinsExactRadioButton.Text = "&Exact";
+      this.histogramBinsExactRadioButton.UseVisualStyleBackColor = true;
+      this.histogramBinsExactRadioButton.CheckedChanged += new System.EventHandler(this.histogramBinsExactRadioButton_CheckedChanged);
+      // 
+      // histogramBinsApproximatelyRadioButton
+      // 
+      this.histogramBinsApproximatelyRadioButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.histogramBinsApproximatelyRadioButton.AutoSize = true;
+      this.histogramBinsApproximatelyRadioButton.Location = new System.Drawing.Point(287, 19);
+      this.histogramBinsApproximatelyRadioButton.Name = "histogramBinsApproximatelyRadioButton";
+      this.histogramBinsApproximatelyRadioButton.Size = new System.Drawing.Size(90, 17);
+      this.histogramBinsApproximatelyRadioButton.TabIndex = 2;
+      this.histogramBinsApproximatelyRadioButton.TabStop = true;
+      this.histogramBinsApproximatelyRadioButton.Text = "&Approximately";
+      this.histogramBinsApproximatelyRadioButton.UseVisualStyleBackColor = true;
+      // 
+      // histogramBinsNumericUpDown
+      // 
+      this.histogramBinsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.histogramBinsNumericUpDown.Location = new System.Drawing.Point(82, 19);
+      this.histogramBinsNumericUpDown.Minimum = new decimal(new int[] {
+            1,
+            0,
+            0,
+            0});
+      this.histogramBinsNumericUpDown.Name = "histogramBinsNumericUpDown";
+      this.histogramBinsNumericUpDown.Size = new System.Drawing.Size(186, 20);
+      this.histogramBinsNumericUpDown.TabIndex = 1;
+      this.histogramBinsNumericUpDown.Value = new decimal(new int[] {
+            1,
+            0,
+            0,
+            0});
+      this.histogramBinsNumericUpDown.ValueChanged += new System.EventHandler(this.histogramBinsNumericUpDown_ValueChanged);
+      // 
+      // label16
+      // 
+      this.label16.AutoSize = true;
+      this.label16.Location = new System.Drawing.Point(6, 49);
+      this.label16.Name = "label16";
+      this.label16.Size = new System.Drawing.Size(67, 13);
+      this.label16.TabIndex = 0;
+      this.label16.Text = "Aggregation:";
+      // 
+      // label17
+      // 
+      this.label17.AutoSize = true;
+      this.label17.Location = new System.Drawing.Point(6, 21);
+      this.label17.Name = "label17";
+      this.label17.Size = new System.Drawing.Size(30, 13);
+      this.label17.TabIndex = 0;
+      this.label17.Text = "&Bins:";
+      // 
+      // histogramAggregationComboBox
+      // 
+      this.histogramAggregationComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.histogramAggregationComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.histogramAggregationComboBox.FormattingEnabled = true;
+      this.histogramAggregationComboBox.Location = new System.Drawing.Point(82, 45);
+      this.histogramAggregationComboBox.Name = "histogramAggregationComboBox";
+      this.histogramAggregationComboBox.Size = new System.Drawing.Size(353, 21);
+      this.histogramAggregationComboBox.TabIndex = 3;
+      this.histogramAggregationComboBox.SelectedValueChanged += new System.EventHandler(this.histogramAggregationComboBox_SelectedValueChanged);
       // 
       // titleTextBox
@@ -927,4 +1042,8 @@
       this.panel5.ResumeLayout(false);
       this.panel5.PerformLayout();
+      this.histogramTabPage.ResumeLayout(false);
+      this.histogramGroupBox.ResumeLayout(false);
+      this.histogramGroupBox.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.histogramBinsNumericUpDown)).EndInit();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.ResumeLayout(false);
@@ -1005,4 +1124,12 @@
     private System.Windows.Forms.CheckBox yAxisSecondaryLogScaleCheckBox;
     private System.Windows.Forms.CheckBox yAxisPrimaryLogScaleCheckBox;
+    private System.Windows.Forms.TabPage histogramTabPage;
+    private System.Windows.Forms.GroupBox histogramGroupBox;
+    private System.Windows.Forms.RadioButton histogramBinsExactRadioButton;
+    private System.Windows.Forms.RadioButton histogramBinsApproximatelyRadioButton;
+    private System.Windows.Forms.NumericUpDown histogramBinsNumericUpDown;
+    private System.Windows.Forms.Label label16;
+    private System.Windows.Forms.Label label17;
+    private System.Windows.Forms.ComboBox histogramAggregationComboBox;
   }
 }
Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesControl.cs	(revision 15068)
@@ -20,8 +20,9 @@
 #endregion
 
+using System;
+using System.Drawing;
+using System.Windows.Forms;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
-using System.Drawing;
-using System.Windows.Forms;
 
 namespace HeuristicLab.Analysis.Views {
@@ -58,4 +59,5 @@
       errorProvider.SetIconPadding(yAxisSecondaryMinimumFixedTextBox, 2);
       errorProvider.SetIconPadding(yAxisSecondaryMaximumFixedTextBox, 2);
+      histogramAggregationComboBox.DataSource = Enum.GetValues(typeof(DataTableVisualProperties.DataTableHistogramAggregation));
     }
 
@@ -101,4 +103,9 @@
           yAxisSecondaryMaximumFixedTextBox.Text = string.Empty;
           yAxisSecondaryLogScaleCheckBox.Checked = false;
+
+          histogramBinsNumericUpDown.Value = 1;
+          histogramBinsApproximatelyRadioButton.Checked = false;
+          histogramBinsExactRadioButton.Checked = false;
+          histogramAggregationComboBox.SelectedIndex = -1;
         } else {
           titleFontLabel.Text = "( " + FormatFont(Content.TitleFont) + " )";
@@ -139,4 +146,13 @@
           yAxisSecondaryMaximumFixedTextBox.Text = Content.SecondYAxisMaximumFixedValue.ToString();
           yAxisSecondaryLogScaleCheckBox.Checked = Content.SecondYAxisLogScale;
+
+          if (Content.HistogramBins < histogramBinsNumericUpDown.Minimum)
+            histogramBinsNumericUpDown.Value = histogramBinsNumericUpDown.Minimum;
+          else if (Content.HistogramBins > histogramBinsNumericUpDown.Maximum)
+            histogramBinsNumericUpDown.Value = histogramBinsNumericUpDown.Maximum;
+          else histogramBinsNumericUpDown.Value = Content.HistogramBins;
+          histogramBinsApproximatelyRadioButton.Checked = !Content.HistogramExactBins;
+          histogramBinsExactRadioButton.Checked = Content.HistogramExactBins;
+          histogramAggregationComboBox.SelectedItem = Content.HistogramAggregation;
         }
       } finally { SuppressEvents = false; }
@@ -483,4 +499,28 @@
       }
     }
+
+    private void histogramBinsNumericUpDown_ValueChanged(object sender, System.EventArgs e) {
+      if (!SuppressEvents && Content != null) {
+        Content.HistogramBins = (int)histogramBinsNumericUpDown.Value;
+      }
+    }
+
+    private void histogramBinsExactRadioButton_CheckedChanged(object sender, System.EventArgs e) {
+      if (!SuppressEvents && Content != null) {
+        SuppressEvents = true;
+        try {
+          Content.HistogramExactBins = histogramBinsExactRadioButton.Checked;
+        } finally { SuppressEvents = false; }
+      }
+    }
+
+    private void histogramAggregationComboBox_SelectedValueChanged(object sender, System.EventArgs e) {
+      if (!SuppressEvents && Content != null) {
+        SuppressEvents = true;
+        try {
+          Content.HistogramAggregation = (DataTableVisualProperties.DataTableHistogramAggregation)histogramAggregationComboBox.SelectedValue;
+        } finally { SuppressEvents = false; }
+      }
+    }
     #endregion
 
Index: /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs	(revision 15068)
@@ -52,11 +52,4 @@
     }
     #endregion
-    #region Histogram Aggregation
-    public enum DataRowHistogramAggregation {
-      Overlapping,
-      SideBySide,
-      Stacked
-    }
-    #endregion
 
     private DataRowChartType chartType;
@@ -130,34 +123,5 @@
       }
     }
-    private int bins;
-    public int Bins {
-      get { return bins; }
-      set {
-        if (bins != value) {
-          bins = value;
-          OnPropertyChanged("Bins");
-        }
-      }
-    }
-    private bool exactBins;
-    public bool ExactBins {
-      get { return exactBins; }
-      set {
-        if (exactBins != value) {
-          exactBins = value;
-          OnPropertyChanged("ExactBins");
-        }
-      }
-    }
-    private DataRowHistogramAggregation aggregation;
-    public DataRowHistogramAggregation Aggregation {
-      get { return aggregation; }
-      set {
-        if (aggregation != value) {
-          aggregation = value;
-          OnPropertyChanged("Aggregation");
-        }
-      }
-    }
+
     private double scaleFactor;
     public double ScaleFactor {
@@ -232,19 +196,4 @@
       set { lineWidth = value; }
     }
-    [Storable(Name = "Bins")]
-    private int StorableBins {
-      get { return bins; }
-      set { bins = value; }
-    }
-    [Storable(Name = "ExactBins")]
-    private bool StorableExactBins {
-      get { return exactBins; }
-      set { exactBins = value; }
-    }
-    [Storable(Name = "Aggregation", DefaultValue = DataRowHistogramAggregation.Overlapping)]
-    private DataRowHistogramAggregation StorableAggregation {
-      get { return aggregation; }
-      set { aggregation = value; }
-    }
     [Storable(Name = "ScaleFactor")]
     private double StorableScaleFactor {
@@ -262,4 +211,23 @@
       set { displayName = value; }
     }
+    #endregion
+
+    #region Histogram Properties - Backwards Compatability
+    internal enum DataRowHistogramAggregation {
+      Overlapping,
+      SideBySide,
+      Stacked
+    }
+
+    internal int? Bins { get; private set; }
+    internal bool? ExactBins { get; private set; }
+    internal DataRowHistogramAggregation? Aggregation { get; private set; }
+
+    [Storable(Name = "Bins", AllowOneWay = true)]
+    private int StorableBins { set { Bins = value; } }
+    [Storable(Name = "ExactBins", AllowOneWay = true)]
+    private bool StorableExactBins { set { ExactBins = value; } }
+    [Storable(Name = "Aggregation", AllowOneWay = true)]
+    private DataRowHistogramAggregation StorableAggregation { set { Aggregation = value; } }
     #endregion
 
@@ -275,7 +243,4 @@
       this.startIndexZero = original.startIndexZero;
       this.lineWidth = original.lineWidth;
-      this.bins = original.bins;
-      this.exactBins = original.exactBins;
-      this.aggregation = original.aggregation;
       this.scaleFactor = original.scaleFactor;
       this.displayName = original.displayName;
@@ -290,7 +255,4 @@
       startIndexZero = false;
       lineWidth = 1;
-      bins = 10;
-      exactBins = false;
-      aggregation = DataRowHistogramAggregation.Overlapping;
       scaleFactor = 1.0;
       displayName = String.Empty;
@@ -318,11 +280,8 @@
       if (secondXAxis == default(bool)
         && lineStyle == default(DataRowLineStyle)
-        && lineWidth == default(int) && bins == default(int) && exactBins == default(bool)
         && displayName == default(string)) {
         secondXAxis = false;
         lineStyle = DataRowLineStyle.Solid;
         lineWidth = 1;
-        bins = 10;
-        exactBins = false;
         displayName = String.Empty;
       }
Index: /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs	(revision 15068)
@@ -112,4 +112,19 @@
       if (VisualProperties == null) VisualProperties = new DataTableVisualProperties(name);
       if (VisualProperties.Title == null) VisualProperties.Title = name;
+
+      #region Backwards Compatability Histogram Visual Properties 
+      var rowProperties = Rows.Select(r => r.VisualProperties).ToList();
+      if (rowProperties.Any(r => r.Bins.HasValue))
+        VisualProperties.HistogramBins = rowProperties.Where(r => r.Bins.HasValue).Max(r => r.Bins.Value);
+      if (rowProperties.Any(r => r.ExactBins.HasValue))
+        VisualProperties.HistogramExactBins = rowProperties.Where(r => r.ExactBins.HasValue).Any(r => r.ExactBins.Value);
+      if (rowProperties.Any(r => r.Aggregation.HasValue)) {
+        var maxOccurrence = rowProperties
+          .Where(r => r.Aggregation.HasValue).Select(r => r.Aggregation.Value)
+          .GroupBy(x => x).OrderByDescending(x => x.Count())
+          .First().Key;
+        VisualProperties.HistogramAggregation = (DataTableVisualProperties.DataTableHistogramAggregation)maxOccurrence;
+      }
+      #endregion
     }
     #endregion
Index: /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs	(revision 15068)
@@ -20,8 +20,9 @@
 #endregion
 
+using System;
+using System.ComponentModel;
+using System.Drawing;
 using HeuristicLab.Common;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using System.ComponentModel;
-using System.Drawing;
 
 namespace HeuristicLab.Analysis {
@@ -31,4 +32,13 @@
   [StorableClass]
   public class DataTableVisualProperties : DeepCloneable, INotifyPropertyChanged {
+
+    #region Histogram Aggregation
+    public enum DataTableHistogramAggregation {
+      Overlapping,
+      SideBySide,
+      Stacked
+    }
+    #endregion
+
     private Font titleFont;
     public Font TitleFont {
@@ -352,4 +362,37 @@
         secondYAxisLogScale = value;
         OnPropertyChanged("SecondYAxisLogScale");
+      }
+    }
+
+    private int histogramBins;
+    public int HistogramBins {
+      get { return histogramBins; }
+      set {
+        if (histogramBins != value) {
+          histogramBins = value;
+          OnPropertyChanged("HistogramBins");
+        }
+      }
+    }
+
+    private bool histogramExactBins;
+    public bool HistogramExactBins {
+      get { return histogramExactBins; }
+      set {
+        if (histogramExactBins != value) {
+          histogramExactBins = value;
+          OnPropertyChanged("HistogramExactBins");
+        }
+      }
+    }
+
+    private DataTableHistogramAggregation histogramAggregation;
+    public DataTableHistogramAggregation HistogramAggregation {
+      get { return histogramAggregation; }
+      set {
+        if (histogramAggregation != value) {
+          histogramAggregation = value;
+          OnPropertyChanged("HistogramAggregation");
+        }
       }
     }
@@ -500,4 +543,19 @@
       get { return secondYAxisLogScale; }
       set { secondYAxisLogScale = value; }
+    }
+    [Storable(Name = "HistogramBins", DefaultValue = 10)]
+    private int StorableHistogramBins {
+      get { return histogramBins; }
+      set { histogramBins = value; }
+    }
+    [Storable(Name = "HistogramExactBins", DefaultValue = false)]
+    private bool StorableHistogramExactBins {
+      get { return histogramExactBins; }
+      set { histogramExactBins = value; }
+    }
+    [Storable(Name = "HistogramAggregation", DefaultValue = DataTableHistogramAggregation.Overlapping)]
+    private DataTableHistogramAggregation StorableHistogramAggregation {
+      get { return histogramAggregation; }
+      set { histogramAggregation = value; }
     }
     #endregion
@@ -536,4 +594,7 @@
       this.yAxisLogScale = original.yAxisLogScale;
       this.secondYAxisLogScale = original.secondYAxisLogScale;
+      this.histogramBins = original.histogramBins;
+      this.histogramExactBins = original.histogramExactBins;
+      this.histogramAggregation = original.histogramAggregation;
     }
     public DataTableVisualProperties() {
@@ -565,4 +626,7 @@
       this.yAxisLogScale = false;
       this.secondYAxisLogScale = false;
+      histogramBins = 10;
+      histogramExactBins = false;
+      histogramAggregation = DataTableHistogramAggregation.Overlapping;
     }
     public DataTableVisualProperties(string title)
Index: /trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.cs
===================================================================
--- /trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.cs	(revision 15068)
@@ -716,5 +716,5 @@
     private void AddPointsToHistogramSeries(Series series, DataRow row, List<double> values) {
       if (!row.Values.Any()) return;
-      int bins = row.VisualProperties.Bins;
+      int bins = Content.VisualProperties.HistogramBins;
 
       double minValue = GetMinimum(row.Values);
@@ -728,5 +728,5 @@
 
 
-      if (!row.VisualProperties.ExactBins) {
+      if (!Content.VisualProperties.HistogramExactBins) {
         intervalWidth = HumanRoundRange(intervalWidth);
         minValue = Math.Floor(minValue / intervalWidth) * intervalWidth;
Index: /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Analyzers/SymbolicExpressionTreeLengthAnalyzer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Analyzers/SymbolicExpressionTreeLengthAnalyzer.cs	(revision 15067)
+++ /trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Analyzers/SymbolicExpressionTreeLengthAnalyzer.cs	(revision 15068)
@@ -185,10 +185,10 @@
 
         treeLengthsTableRow.VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Histogram;
-        treeLengthsTableRow.VisualProperties.ExactBins = false;
+        treeLengthsTable.VisualProperties.HistogramExactBins = false;
 
         int range = maxLength - minLength;
         if (range == 0) range = 1;
         // the following trick should result in an integer intervalWidth of 1,2,4,...
-        treeLengthsTableRow.VisualProperties.Bins = range;
+        treeLengthsTable.VisualProperties.HistogramBins = range;
 
         if (maxLength <= 25) // [0,25]
