Index: /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 4643)
+++ /trunk/sources/HeuristicLab.Analysis.Views/3.3/DataTableView.cs	(revision 4644)
@@ -107,5 +107,22 @@
     private void AddDataRow(DataRow row) {
       Series series = new Series(row.Name);
-      series.ChartType = SeriesChartType.FastLine;
+      switch (row.VisualProperties.ChartType) {
+        case DataRowVisualProperties.DataRowChartType.Line:
+          series.ChartType = SeriesChartType.FastLine;
+          break;
+        case DataRowVisualProperties.DataRowChartType.Bars:
+          series.ChartType = SeriesChartType.Bar;
+          break;
+        case DataRowVisualProperties.DataRowChartType.Columns:
+          series.ChartType = SeriesChartType.Column;
+          break;
+        case DataRowVisualProperties.DataRowChartType.Points:
+          series.ChartType = SeriesChartType.FastPoint;
+          break;
+        default:
+          series.ChartType = SeriesChartType.FastPoint;
+          break;
+      }
+      series.YAxisType = row.VisualProperties.SecondYAxis ? AxisType.Secondary : AxisType.Primary;
       series.ToolTip = row.Name + " X = #INDEX, Y = #VAL";
       FillSeriesWithRowValues(series, row);
@@ -142,4 +159,5 @@
     private void RegisterDataRowEvents(DataRow row) {
       row.NameChanged += new EventHandler(Row_NameChanged);
+      row.VisualPropertiesChanged += new EventHandler(Row_VisualPropertiesChanged);
       valuesRowsTable.Add(row.Values, row);
       row.Values.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<double>>(Values_ItemsAdded);
@@ -156,4 +174,5 @@
       row.Values.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<double>>(Values_CollectionReset);
       valuesRowsTable.Remove(row.Values);
+      row.VisualPropertiesChanged -= new EventHandler(Row_VisualPropertiesChanged);
       row.NameChanged -= new EventHandler(Row_NameChanged);
     }
@@ -212,4 +231,29 @@
           RegisterDataRowEvents(row);
         }
+      }
+    }
+    private void Row_VisualPropertiesChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Row_VisualPropertiesChanged), sender, e);
+      else {
+        DataRow row = (DataRow)sender;
+        switch (row.VisualProperties.ChartType) {
+          case DataRowVisualProperties.DataRowChartType.Line:
+            chart.Series[row.Name].ChartType = SeriesChartType.FastLine;
+            break;
+          case DataRowVisualProperties.DataRowChartType.Bars:
+            chart.Series[row.Name].ChartType = SeriesChartType.Bar;
+            break;
+          case DataRowVisualProperties.DataRowChartType.Columns:
+            chart.Series[row.Name].ChartType = SeriesChartType.Column;
+            break;
+          case DataRowVisualProperties.DataRowChartType.Points:
+            chart.Series[row.Name].ChartType = SeriesChartType.FastPoint;
+            break;
+          default:
+            chart.Series[row.Name].ChartType = SeriesChartType.FastPoint;
+            break;
+        }
+        chart.Series[row.Name].YAxisType = row.VisualProperties.SecondYAxis ? AxisType.Secondary : AxisType.Primary;
       }
     }
Index: /trunk/sources/HeuristicLab.Analysis/3.3/DataRow.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/DataRow.cs	(revision 4643)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/DataRow.cs	(revision 4644)
@@ -20,4 +20,7 @@
 #endregion
 
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
 using HeuristicLab.Collections;
 using HeuristicLab.Common;
@@ -32,5 +35,17 @@
   [StorableClass]
   public sealed class DataRow : NamedItem {
-    [Storable]
+    private DataRowVisualProperties visualProperties;
+    public DataRowVisualProperties VisualProperties {
+      get { return visualProperties; }
+      set {
+        if (visualProperties != value) {
+          if (value == null) throw new ArgumentNullException("VisualProperties");
+          if (visualProperties != null) visualProperties.PropertyChanged -= new PropertyChangedEventHandler(VisualProperties_PropertyChanged);
+          visualProperties = value;
+          visualProperties.PropertyChanged += new PropertyChangedEventHandler(VisualProperties_PropertyChanged);
+          OnVisualPropertiesChanged();
+        }
+      }
+    }
     private ObservableList<double> values;
     public IObservableList<double> Values {
@@ -38,23 +53,65 @@
     }
 
+    #region Persistence Properties
+    [Storable(Name = "VisualProperties")]
+    private DataRowVisualProperties StorableVisualProperties {
+      get { return VisualProperties; }
+      set { VisualProperties = value; }
+    }
+    [Storable(Name = "values")]
+    private IEnumerable<double> StorableValues {
+      get { return values; }
+      set { values = new ObservableList<double>(value); }
+    }
+    #endregion
+
     public DataRow()
       : base() {
+      VisualProperties = new DataRowVisualProperties();
       values = new ObservableList<double>();
     }
     public DataRow(string name)
       : base(name) {
+      VisualProperties = new DataRowVisualProperties();
       values = new ObservableList<double>();
     }
     public DataRow(string name, string description)
       : base(name, description) {
+      VisualProperties = new DataRowVisualProperties();
       values = new ObservableList<double>();
     }
+    public DataRow(string name, string description, DataRowVisualProperties visualProperties)
+      : base(name, description) {
+      VisualProperties = visualProperties;
+      values = new ObservableList<double>();
+    }
+    [StorableConstructor]
+    private DataRow(bool deserializing) { }
+
+    // BackwardsCompatibility3.3
+    #region Backwards compatible code, remove with 3.4
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      if (VisualProperties == null) VisualProperties = new DataRowVisualProperties();
+    }
+    #endregion
 
     public override IDeepCloneable Clone(Cloner cloner) {
       DataRow clone = new DataRow(Name, Description);
       cloner.RegisterClonedObject(this, clone);
+      clone.VisualProperties = (DataRowVisualProperties)cloner.Clone(visualProperties);
       clone.values.AddRange(values);
       return clone;
     }
+
+    public event EventHandler VisualPropertiesChanged;
+    private void OnVisualPropertiesChanged() {
+      EventHandler handler = VisualPropertiesChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    private void VisualProperties_PropertyChanged(object sender, PropertyChangedEventArgs e) {
+      OnVisualPropertiesChanged();
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Analysis/3.3/DataRowVisualProperties.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/DataRowVisualProperties.cs	(revision 4644)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/DataRowVisualProperties.cs	(revision 4644)
@@ -0,0 +1,88 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.ComponentModel;
+using HeuristicLab.Common;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Analysis {
+  /// <summary>
+  /// Visual properties of a DataRow.
+  /// </summary>
+  [StorableClass]
+  public class DataRowVisualProperties : DeepCloneable, INotifyPropertyChanged {
+    #region ChartType
+    public enum DataRowChartType {
+      Line,
+      Columns,
+      Points,
+      Bars
+    }
+    #endregion
+
+    [Storable(DefaultValue = DataRowChartType.Line)]
+    private DataRowChartType chartType;
+    public DataRowChartType ChartType {
+      get { return chartType; }
+      set {
+        if (chartType != value) {
+          chartType = value;
+          OnPropertyChanged("ChartType");
+        }
+      }
+    }
+    [Storable(DefaultValue = false)]
+    private bool secondYAxis;
+    public bool SecondYAxis {
+      get { return secondYAxis; }
+      set {
+        if (secondYAxis != value) {
+          secondYAxis = value;
+          OnPropertyChanged("SecondYAxis");
+        }
+      }
+    }
+
+    public DataRowVisualProperties() {
+      chartType = DataRowChartType.Line;
+      secondYAxis = false;
+    }
+    public DataRowVisualProperties(DataRowChartType chartType, bool secondYAxis) {
+      this.chartType = chartType;
+      this.secondYAxis = secondYAxis;
+    }
+    [StorableConstructor]
+    protected DataRowVisualProperties(bool deserializing) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      DataRowVisualProperties clone = (DataRowVisualProperties)base.Clone(cloner);
+      clone.chartType = chartType;
+      clone.secondYAxis = secondYAxis;
+      return clone;
+    }
+
+    public event PropertyChangedEventHandler PropertyChanged;
+    protected virtual void OnPropertyChanged(string propertyName) {
+      PropertyChangedEventHandler handler = PropertyChanged;
+      if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 4643)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 4644)
@@ -118,4 +118,5 @@
     <Compile Include="Allele.cs" />
     <Compile Include="AlleleFrequency.cs" />
+    <Compile Include="DataRowVisualProperties.cs" />
     <Compile Include="QualityAnalyzer.cs" />
     <Compile Include="MinAverageMaxValueAnalyzer.cs" />
