Index: stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/FactorPartialDependencePlot.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/FactorPartialDependencePlot.cs	(revision 18019)
+++ stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/FactorPartialDependencePlot.cs	(revision 18021)
@@ -222,5 +222,5 @@
         if (updateOnFinish)
           Update();
-      } catch (OperationCanceledException) { 
+      } catch (OperationCanceledException) {
       } catch (AggregateException ae) {
         if (!ae.InnerExceptions.Any(e => e is OperationCanceledException))
@@ -434,12 +434,18 @@
       var refSolution = solutions.First();
       var refSolVars = refSolution.ProblemData.Dataset.VariableNames;
+      var refFactorVars = refSolution.ProblemData.Dataset.StringVariables;
+      var distinctVals = refFactorVars.ToDictionary(fv => fv, fv => refSolution.ProblemData.Dataset.GetStringValues(fv).Distinct().ToArray());
+
       foreach (var solution in solutions.Skip(1)) {
-        var variables1 = solution.ProblemData.Dataset.VariableNames;
-        if (!variables1.All(refSolVars.Contains))
+        var variables1 = new HashSet<string>(solution.ProblemData.Dataset.VariableNames);
+        if (!variables1.IsSubsetOf(refSolVars))
           return false;
 
-        foreach (var factorVar in variables1.Where(solution.ProblemData.Dataset.VariableHasType<string>)) {
-          var distinctVals = refSolution.ProblemData.Dataset.GetStringValues(factorVar).Distinct();
-          if (solution.ProblemData.Dataset.GetStringValues(factorVar).Any(val => !distinctVals.Contains(val))) return false;
+        foreach (var factorVar in solution.ProblemData.Dataset.StringVariables) {
+          var refValues = distinctVals[factorVar];
+          var values = new HashSet<string>(solution.ProblemData.Dataset.GetStringValues(factorVar));
+
+          if (!values.IsSubsetOf(refValues))
+            return false;
         }
       }
Index: stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/PartialDependencePlot.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/PartialDependencePlot.cs	(revision 18019)
+++ stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Controls/PartialDependencePlot.cs	(revision 18021)
@@ -530,8 +530,8 @@
 
     public async Task AddSolutionAsync(IRegressionSolution solution) {
+      if (solutions.Contains(solution))
+        return;
       if (!SolutionsCompatible(solutions.Concat(new[] { solution })))
         throw new ArgumentException("The solution is not compatible with the problem data.");
-      if (solutions.Contains(solution))
-        return;
 
       solutions.Add(solution);
@@ -568,12 +568,18 @@
       var refSolution = solutions.First();
       var refSolVars = refSolution.ProblemData.Dataset.VariableNames;
+      var refFactorVars = refSolution.ProblemData.Dataset.StringVariables;
+      var distinctVals = refFactorVars.ToDictionary(fv => fv, fv => refSolution.ProblemData.Dataset.GetStringValues(fv).Distinct().ToArray());
+
       foreach (var solution in solutions.Skip(1)) {
-        var variables1 = solution.ProblemData.Dataset.VariableNames;
-        if (!variables1.All(refSolVars.Contains))
+        var variables1 = new HashSet<string>(solution.ProblemData.Dataset.VariableNames);
+        if (!variables1.IsSubsetOf(refSolVars))
           return false;
 
-        foreach (var factorVar in variables1.Where(solution.ProblemData.Dataset.VariableHasType<string>)) {
-          var distinctVals = refSolution.ProblemData.Dataset.GetStringValues(factorVar).Distinct();
-          if (solution.ProblemData.Dataset.GetStringValues(factorVar).Any(val => !distinctVals.Contains(val))) return false;
+        foreach (var factorVar in solution.ProblemData.Dataset.StringVariables) {
+          var refValues = distinctVals[factorVar];
+          var values = new HashSet<string>(solution.ProblemData.Dataset.GetStringValues(factorVar));
+
+          if (!values.IsSubsetOf(refValues))
+            return false;
         }
       }
Index: stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.cs	(revision 18019)
+++ stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionPartialDependencePlotView.cs	(revision 18021)
@@ -119,5 +119,5 @@
 
       // create dataset of problemData input variables and model input variables
-      // necessary workaround to have the variables in the occuring order
+      // necessary workaround to have the variables in the occurring order
       var inputvariables =
         new HashSet<string>(Content.ProblemData.AllowedInputVariables.Union(Content.Model.VariablesUsedForPrediction));
