Index: branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/FactorPartialDependencePlot.cs
===================================================================
--- branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/FactorPartialDependencePlot.cs	(revision 16444)
+++ branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/FactorPartialDependencePlot.cs	(revision 16445)
@@ -167,8 +167,12 @@
       // add an event such that whenever a value is changed in the shared dataset, 
       // this change is reflected in the internal dataset (where the value becomes a whole column)
-      if (this.sharedFixedVariables != null)
+      if (this.sharedFixedVariables != null) {
         this.sharedFixedVariables.ItemChanged -= sharedFixedVariables_ItemChanged;
+        this.sharedFixedVariables.Reset -= sharedFixedVariables_Reset;
+      }
+
       this.sharedFixedVariables = sharedFixedVariables;
       this.sharedFixedVariables.ItemChanged += sharedFixedVariables_ItemChanged;
+      this.sharedFixedVariables.Reset += sharedFixedVariables_Reset;
 
       RecalculateInternalDataset();
@@ -218,7 +222,5 @@
         if (updateOnFinish)
           Update();
-      }
-      catch (OperationCanceledException) { }
-      catch (AggregateException ae) {
+      } catch (OperationCanceledException) { } catch (AggregateException ae) {
         if (!ae.InnerExceptions.Any(e => e is OperationCanceledException))
           throw;
@@ -495,4 +497,12 @@
     }
 
+    private void sharedFixedVariables_Reset(object sender, EventArgs e) {
+      var newValue = sharedFixedVariables.GetStringValue(FreeVariable, 0);
+      UpdateSelectedValue(newValue);
+
+      int idx = variableValues.IndexOf(newValue);
+      UpdateAllSeriesStyles(idx);
+    }
+
     private async void chart_DragDrop(object sender, DragEventArgs e) {
       var data = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
Index: branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/PartialDependencePlot.cs
===================================================================
--- branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/PartialDependencePlot.cs	(revision 16444)
+++ branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/PartialDependencePlot.cs	(revision 16445)
@@ -245,8 +245,12 @@
       // add an event such that whenever a value is changed in the shared dataset, 
       // this change is reflected in the internal dataset (where the value becomes a whole column)
-      if (this.sharedFixedVariables != null)
+      if (this.sharedFixedVariables != null) {
         this.sharedFixedVariables.ItemChanged -= sharedFixedVariables_ItemChanged;
+        this.sharedFixedVariables.Reset -= sharedFixedVariables_Reset;
+      }
+
       this.sharedFixedVariables = sharedFixedVariables;
       this.sharedFixedVariables.ItemChanged += sharedFixedVariables_ItemChanged;
+      this.sharedFixedVariables.Reset += sharedFixedVariables_Reset;
 
       RecalculateTrainingLimits(initializeAxisRanges);
@@ -314,7 +318,5 @@
         if (updateOnFinish)
           Update();
-      }
-      catch (OperationCanceledException) { }
-      catch (AggregateException ae) {
+      } catch (OperationCanceledException) { } catch (AggregateException ae) {
         if (!ae.InnerExceptions.Any(e => e is OperationCanceledException))
           throw;
@@ -625,5 +627,7 @@
 
       var variableName = variables[columnIndex];
-      if (variableName == FreeVariable) return;
+      if (variableName == FreeVariable) {
+        return;
+      }
       if (internalDataset.VariableHasType<double>(variableName)) {
         var v = sharedFixedVariables.GetDoubleValue(variableName, rowIndex);
@@ -640,4 +644,10 @@
     }
 
+    private void sharedFixedVariables_Reset(object sender, EventArgs e) {
+      var newValue = sharedFixedVariables.GetDoubleValue(FreeVariable, 0);
+      VerticalLineAnnotation.X = newValue;
+      UpdateCursor();  // triggers update of InternalDataset
+    }
+
     private void chart_AnnotationPositionChanging(object sender, AnnotationPositionChangingEventArgs e) {
       var step = (trainingMax - trainingMin) / drawingSteps;
Index: branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Interfaces/IPartialDependencePlot.cs
===================================================================
--- branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Interfaces/IPartialDependencePlot.cs	(revision 16444)
+++ branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Interfaces/IPartialDependencePlot.cs	(revision 16445)
@@ -25,5 +25,5 @@
   public interface IPartialDependencePlot {
     Task RecalculateAsync(bool updateOnFinish, bool resetYAxis);
-    double YMin { get;  }
+    double YMin { get; }
     double YMax { get; }
     double? FixedYAxisMin { get; set; }
Index: branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.Designer.cs
===================================================================
--- branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.Designer.cs	(revision 16444)
+++ branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.Designer.cs	(revision 16445)
@@ -31,4 +31,5 @@
       this.automaticYAxisCheckBox = new System.Windows.Forms.CheckBox();
       this.densityGroupBox = new System.Windows.Forms.GroupBox();
+      this.columnsNumericUpDown = new System.Windows.Forms.NumericUpDown();
       this.columnsLabel = new System.Windows.Forms.Label();
       this.densityComboBox = new System.Windows.Forms.ComboBox();
@@ -36,9 +37,13 @@
       this.configSplitContainer = new System.Windows.Forms.SplitContainer();
       this.variableGroupBox = new System.Windows.Forms.GroupBox();
+      this.rowSelectGroupBox = new System.Windows.Forms.GroupBox();
+      this.comboBox1 = new System.Windows.Forms.ComboBox();
+      this.label2 = new System.Windows.Forms.Label();
+      this.rowNrNumericUpDown = new System.Windows.Forms.NumericUpDown();
       this.scrollPanel = new System.Windows.Forms.Panel();
       this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.columnsNumericUpDown = new System.Windows.Forms.NumericUpDown();
       this.yAxisConfigGroupBox.SuspendLayout();
       this.densityGroupBox.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.columnsNumericUpDown)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.configSplitContainer)).BeginInit();
       this.configSplitContainer.Panel1.SuspendLayout();
@@ -46,7 +51,8 @@
       this.configSplitContainer.SuspendLayout();
       this.variableGroupBox.SuspendLayout();
+      this.rowSelectGroupBox.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.rowNrNumericUpDown)).BeginInit();
       this.scrollPanel.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.columnsNumericUpDown)).BeginInit();
       this.SuspendLayout();
       // 
@@ -57,5 +63,5 @@
       this.variableListView.Location = new System.Drawing.Point(3, 16);
       this.variableListView.Name = "variableListView";
-      this.variableListView.Size = new System.Drawing.Size(163, 478);
+      this.variableListView.Size = new System.Drawing.Size(163, 404);
       this.variableListView.TabIndex = 0;
       this.variableListView.UseCompatibleStateImageBehavior = false;
@@ -126,85 +132,4 @@
       this.densityGroupBox.TabStop = false;
       this.densityGroupBox.Text = "Settings";
-      // 
-      // columnsLabel
-      // 
-      this.columnsLabel.AutoSize = true;
-      this.columnsLabel.Location = new System.Drawing.Point(7, 49);
-      this.columnsLabel.Name = "columnsLabel";
-      this.columnsLabel.Size = new System.Drawing.Size(50, 13);
-      this.columnsLabel.TabIndex = 0;
-      this.columnsLabel.Text = "Columns:";
-      // 
-      // densityComboBox
-      // 
-      this.densityComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.densityComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.densityComboBox.FormattingEnabled = true;
-      this.densityComboBox.Items.AddRange(new object[] {
-            "None",
-            "Training",
-            "Test",
-            "All"});
-      this.densityComboBox.Location = new System.Drawing.Point(66, 19);
-      this.densityComboBox.Name = "densityComboBox";
-      this.densityComboBox.Size = new System.Drawing.Size(94, 21);
-      this.densityComboBox.TabIndex = 0;
-      this.densityComboBox.SelectedIndexChanged += new System.EventHandler(this.densityComboBox_SelectedIndexChanged);
-      // 
-      // label1
-      // 
-      this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(7, 22);
-      this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(45, 13);
-      this.label1.TabIndex = 0;
-      this.label1.Text = "Density:";
-      // 
-      // configSplitContainer
-      // 
-      this.configSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.configSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
-      this.configSplitContainer.Location = new System.Drawing.Point(0, 0);
-      this.configSplitContainer.Name = "configSplitContainer";
-      // 
-      // configSplitContainer.Panel1
-      // 
-      this.configSplitContainer.Panel1.Controls.Add(this.variableGroupBox);
-      this.configSplitContainer.Panel1.Controls.Add(this.densityGroupBox);
-      this.configSplitContainer.Panel1.Controls.Add(this.yAxisConfigGroupBox);
-      // 
-      // configSplitContainer.Panel2
-      // 
-      this.configSplitContainer.Panel2.Controls.Add(this.scrollPanel);
-      this.configSplitContainer.Size = new System.Drawing.Size(715, 648);
-      this.configSplitContainer.SplitterDistance = 169;
-      this.configSplitContainer.TabIndex = 0;
-      this.configSplitContainer.TabStop = false;
-      // 
-      // variableGroupBox
-      // 
-      this.variableGroupBox.Controls.Add(this.variableListView);
-      this.variableGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.variableGroupBox.Location = new System.Drawing.Point(0, 151);
-      this.variableGroupBox.Name = "variableGroupBox";
-      this.variableGroupBox.Size = new System.Drawing.Size(169, 497);
-      this.variableGroupBox.TabIndex = 1;
-      this.variableGroupBox.TabStop = false;
-      this.variableGroupBox.Text = "Variables";
-      // 
-      // scrollPanel
-      // 
-      this.scrollPanel.Controls.Add(this.partialDependencePlotTableLayout);
-      this.scrollPanel.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scrollPanel.Location = new System.Drawing.Point(0, 0);
-      this.scrollPanel.Name = "scrollPanel";
-      this.scrollPanel.Size = new System.Drawing.Size(542, 648);
-      this.scrollPanel.TabIndex = 0;
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
       // 
       // columnsNumericUpDown
@@ -228,4 +153,129 @@
       this.columnsNumericUpDown.ValueChanged += new System.EventHandler(this.columnsNumericUpDown_ValueChanged);
       // 
+      // columnsLabel
+      // 
+      this.columnsLabel.AutoSize = true;
+      this.columnsLabel.Location = new System.Drawing.Point(7, 49);
+      this.columnsLabel.Name = "columnsLabel";
+      this.columnsLabel.Size = new System.Drawing.Size(50, 13);
+      this.columnsLabel.TabIndex = 0;
+      this.columnsLabel.Text = "Columns:";
+      // 
+      // densityComboBox
+      // 
+      this.densityComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.densityComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.densityComboBox.FormattingEnabled = true;
+      this.densityComboBox.Items.AddRange(new object[] {
+            "None",
+            "Training",
+            "Test",
+            "All"});
+      this.densityComboBox.Location = new System.Drawing.Point(66, 19);
+      this.densityComboBox.Name = "densityComboBox";
+      this.densityComboBox.Size = new System.Drawing.Size(94, 21);
+      this.densityComboBox.TabIndex = 0;
+      this.densityComboBox.SelectedIndexChanged += new System.EventHandler(this.densityComboBox_SelectedIndexChanged);
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(7, 22);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(45, 13);
+      this.label1.TabIndex = 0;
+      this.label1.Text = "Density:";
+      // 
+      // configSplitContainer
+      // 
+      this.configSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.configSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+      this.configSplitContainer.Location = new System.Drawing.Point(0, 0);
+      this.configSplitContainer.Name = "configSplitContainer";
+      // 
+      // configSplitContainer.Panel1
+      // 
+      this.configSplitContainer.Panel1.Controls.Add(this.variableGroupBox);
+      this.configSplitContainer.Panel1.Controls.Add(this.rowSelectGroupBox);
+      this.configSplitContainer.Panel1.Controls.Add(this.densityGroupBox);
+      this.configSplitContainer.Panel1.Controls.Add(this.yAxisConfigGroupBox);
+      // 
+      // configSplitContainer.Panel2
+      // 
+      this.configSplitContainer.Panel2.Controls.Add(this.scrollPanel);
+      this.configSplitContainer.Size = new System.Drawing.Size(715, 648);
+      this.configSplitContainer.SplitterDistance = 169;
+      this.configSplitContainer.TabIndex = 0;
+      this.configSplitContainer.TabStop = false;
+      // 
+      // variableGroupBox
+      // 
+      this.variableGroupBox.Controls.Add(this.variableListView);
+      this.variableGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.variableGroupBox.Location = new System.Drawing.Point(0, 151);
+      this.variableGroupBox.Name = "variableGroupBox";
+      this.variableGroupBox.Size = new System.Drawing.Size(169, 423);
+      this.variableGroupBox.TabIndex = 1;
+      this.variableGroupBox.TabStop = false;
+      this.variableGroupBox.Text = "Variables";
+      // 
+      // rowSelectGroupBox
+      // 
+      this.rowSelectGroupBox.Controls.Add(this.comboBox1);
+      this.rowSelectGroupBox.Controls.Add(this.label2);
+      this.rowSelectGroupBox.Controls.Add(this.rowNrNumericUpDown);
+      this.rowSelectGroupBox.Dock = System.Windows.Forms.DockStyle.Bottom;
+      this.rowSelectGroupBox.Location = new System.Drawing.Point(0, 574);
+      this.rowSelectGroupBox.Name = "rowSelectGroupBox";
+      this.rowSelectGroupBox.Size = new System.Drawing.Size(169, 74);
+      this.rowSelectGroupBox.TabIndex = 1;
+      this.rowSelectGroupBox.TabStop = false;
+      this.rowSelectGroupBox.Text = "Set Fixed Variable Values";
+      // 
+      // comboBox1
+      // 
+      this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.comboBox1.FormattingEnabled = true;
+      this.comboBox1.Items.AddRange(new object[] {
+            "Mean",
+            "Median",
+            "Most Common"});
+      this.comboBox1.Location = new System.Drawing.Point(10, 45);
+      this.comboBox1.Name = "comboBox1";
+      this.comboBox1.Size = new System.Drawing.Size(150, 21);
+      this.comboBox1.TabIndex = 3;
+      // 
+      // label2
+      // 
+      this.label2.AutoSize = true;
+      this.label2.Location = new System.Drawing.Point(7, 21);
+      this.label2.Name = "label2";
+      this.label2.Size = new System.Drawing.Size(46, 13);
+      this.label2.TabIndex = 2;
+      this.label2.Text = "Row Nr.";
+      // 
+      // rowNrNumericUpDown
+      // 
+      this.rowNrNumericUpDown.Location = new System.Drawing.Point(66, 19);
+      this.rowNrNumericUpDown.Name = "rowNrNumericUpDown";
+      this.rowNrNumericUpDown.Size = new System.Drawing.Size(94, 20);
+      this.rowNrNumericUpDown.TabIndex = 1;
+      this.rowNrNumericUpDown.ValueChanged += new System.EventHandler(this.rowNrNumericUpDown_ValueChanged);
+      // 
+      // scrollPanel
+      // 
+      this.scrollPanel.Controls.Add(this.partialDependencePlotTableLayout);
+      this.scrollPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scrollPanel.Location = new System.Drawing.Point(0, 0);
+      this.scrollPanel.Name = "scrollPanel";
+      this.scrollPanel.Size = new System.Drawing.Size(542, 648);
+      this.scrollPanel.TabIndex = 0;
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
       // RegressionSolutionPartialDependencePlotView
       // 
@@ -239,4 +289,5 @@
       this.densityGroupBox.ResumeLayout(false);
       this.densityGroupBox.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.columnsNumericUpDown)).EndInit();
       this.configSplitContainer.Panel1.ResumeLayout(false);
       this.configSplitContainer.Panel2.ResumeLayout(false);
@@ -244,8 +295,10 @@
       this.configSplitContainer.ResumeLayout(false);
       this.variableGroupBox.ResumeLayout(false);
+      this.rowSelectGroupBox.ResumeLayout(false);
+      this.rowSelectGroupBox.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.rowNrNumericUpDown)).EndInit();
       this.scrollPanel.ResumeLayout(false);
       this.scrollPanel.PerformLayout();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.columnsNumericUpDown)).EndInit();
       this.ResumeLayout(false);
 
@@ -268,4 +321,8 @@
     private System.Windows.Forms.Label label1;
     private System.Windows.Forms.NumericUpDown columnsNumericUpDown;
+    private System.Windows.Forms.GroupBox rowSelectGroupBox;
+    private System.Windows.Forms.ComboBox comboBox1;
+    private System.Windows.Forms.Label label2;
+    private System.Windows.Forms.NumericUpDown rowNrNumericUpDown;
   }
 }
Index: branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.cs
===================================================================
--- branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.cs	(revision 16444)
+++ branches/2972_PDPRowSelect/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.cs	(revision 16445)
@@ -231,4 +231,6 @@
       sharedFixedVariables.ItemChanged += SharedFixedVariables_ItemChanged;
 
+      rowNrNumericUpDown.Maximum = Content.ProblemData.Dataset.Rows - 1;
+
       RecalculateAndRelayoutCharts();
     }
@@ -564,4 +566,22 @@
       }
     }
+
+    private void rowNrNumericUpDown_ValueChanged(object sender, EventArgs e) {
+      int rowNumber = (int)rowNrNumericUpDown.Value;
+      var dataset = Content.ProblemData.Dataset;
+
+      object[] newRow = sharedFixedVariables.VariableNames
+        .Select<string, object>(variableName => {
+          if (dataset.DoubleVariables.Contains(variableName)) {
+            return dataset.GetDoubleValue(variableName, rowNumber);
+          } else if (dataset.StringVariables.Contains(variableName)) {
+            return dataset.GetStringValue(variableName, rowNumber);
+          } else {
+            throw new NotSupportedException("Only double and string(factor) columns are currently supported.");
+          }
+        }).ToArray();
+
+      sharedFixedVariables.ReplaceRow(0, newRow);
+    }
   }
 }
