Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/08/15 09:51:05 (9 years ago)
Author:
gkronber
Message:

#2369 merged r12493,r12577,r12642 from trunk to stable

Location:
stable
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.DataAnalysis.Views

  • stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.Designer.cs

    r12009 r12668  
    4646    private void InitializeComponent() {
    4747      this.components = new System.ComponentModel.Container();
    48       System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
    49       System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
     48      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
     49      System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
    5050      this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart();
    5151      this.label1 = new System.Windows.Forms.Label();
    5252      this.cmbSamples = new System.Windows.Forms.ComboBox();
     53      this.residualComboBox = new System.Windows.Forms.ComboBox();
    5354      ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit();
    5455      this.SuspendLayout();
     
    5657      // chart
    5758      //
    58       this.chart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    59                   | System.Windows.Forms.AnchorStyles.Left)
    60                   | System.Windows.Forms.AnchorStyles.Right)));
    61       chartArea1.Name = "ChartArea1";
    62       this.chart.ChartAreas.Add(chartArea1);
    63       legend1.Alignment = System.Drawing.StringAlignment.Center;
    64       legend1.Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Top;
    65       legend1.Name = "Legend1";
    66       this.chart.Legends.Add(legend1);
     59      this.chart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
     60            | System.Windows.Forms.AnchorStyles.Left)
     61            | System.Windows.Forms.AnchorStyles.Right)));
     62      chartArea2.Name = "ChartArea1";
     63      this.chart.ChartAreas.Add(chartArea2);
     64      legend2.Alignment = System.Drawing.StringAlignment.Center;
     65      legend2.Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Top;
     66      legend2.Name = "Legend1";
     67      this.chart.Legends.Add(legend2);
    6768      this.chart.Location = new System.Drawing.Point(6, 28);
    6869      this.chart.Name = "chart";
     
    9293      this.cmbSamples.SelectedIndexChanged += new System.EventHandler(this.cmbSamples_SelectedIndexChanged);
    9394      //
     95      // residualComboBox
     96      //
     97      this.residualComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
     98      this.residualComboBox.FormattingEnabled = true;
     99      this.residualComboBox.Items.AddRange(new object[] {
     100            "Absolute error",
     101            "Squared error",
     102            "Relative error"});
     103      this.residualComboBox.Location = new System.Drawing.Point(183, 3);
     104      this.residualComboBox.Name = "residualComboBox";
     105      this.residualComboBox.Size = new System.Drawing.Size(121, 21);
     106      this.residualComboBox.TabIndex = 5;
     107      this.residualComboBox.SelectedIndexChanged += new System.EventHandler(this.residualComboBox_SelectedIndexChanged);
     108      //
    94109      // RegressionSolutionErrorCharacteristicsCurveView
    95110      //
    96111      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
     112      this.Controls.Add(this.residualComboBox);
    97113      this.Controls.Add(this.label1);
    98114      this.Controls.Add(this.cmbSamples);
     
    111127    protected System.Windows.Forms.Label label1;
    112128    protected System.Windows.Forms.ComboBox cmbSamples;
     129    protected System.Windows.Forms.ComboBox residualComboBox;
    113130  }
    114131}
  • stable/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.cs

    r12385 r12668  
    2525using System.Windows.Forms;
    2626using System.Windows.Forms.DataVisualization.Charting;
     27using HeuristicLab.Common;
    2728using HeuristicLab.MainForm;
    2829
     
    4546      cmbSamples.SelectedIndex = 0;
    4647
     48      residualComboBox.SelectedIndex = 0;
     49
    4750      chart.CustomizeAllChartAreas();
    48       chart.ChartAreas[0].AxisX.Title = "Absolute Error";
     51      chart.ChartAreas[0].AxisX.Title = residualComboBox.SelectedItem.ToString();
    4952      chart.ChartAreas[0].AxisX.Minimum = 0.0;
    5053      chart.ChartAreas[0].AxisX.Maximum = 0.0;
     
    99102      chart.Series.Clear();
    100103      chart.Annotations.Clear();
     104      chart.ChartAreas[0].AxisX.Maximum = 0.0;
     105      chart.ChartAreas[0].CursorX.Interval = 0.01;
    101106
    102107      if (Content == null) return;
     
    109114
    110115      AddRegressionSolution(Content);
     116
     117      chart.ChartAreas[0].AxisX.Title = residualComboBox.SelectedItem.ToString();
    111118    }
    112119
     
    118125      solutionSeries.ChartType = SeriesChartType.FastLine;
    119126      var residuals = GetResiduals(GetOriginalValues(), GetEstimatedValues(solution));
    120 
    121127
    122128      var maxValue = residuals.Max();
     
    125131        var maximum = scale * (1 + (int)(maxValue / scale));
    126132        chart.ChartAreas[0].AxisX.Maximum = maximum;
    127       }
    128       chart.ChartAreas[0].CursorX.Interval = residuals.Min() / 100;
     133        chart.ChartAreas[0].CursorX.Interval = residuals.Min() / 100;
     134      }
    129135
    130136      UpdateSeries(residuals, solutionSeries);
     
    203209
    204210    protected virtual List<double> GetResiduals(IEnumerable<double> originalValues, IEnumerable<double> estimatedValues) {
    205       return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x - y)).ToList();
     211      switch (residualComboBox.SelectedItem.ToString()) {
     212        case "Absolute error": return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x - y)).ToList();
     213        case "Squared error": return originalValues.Zip(estimatedValues, (x, y) => (x - y) * (x - y)).ToList();
     214        case "Relative error": return originalValues.Zip(estimatedValues, (x, y) => x.IsAlmost(0.0) ? -1 : Math.Abs((x - y) / x))
     215          .Where(x => x > 0) // remove entries where the original value is 0
     216          .ToList();
     217        default: throw new NotSupportedException();
     218      }
    206219    }
    207220
     
    251264      }
    252265    }
     266
     267    private void residualComboBox_SelectedIndexChanged(object sender, EventArgs e) {
     268      UpdateChart();
     269    }
    253270  }
    254271}
Note: See TracChangeset for help on using the changeset viewer.