Changeset 12493
- Timestamp:
- 06/22/15 20:47:33 (9 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.Designer.cs
r12012 r12493 46 46 private void InitializeComponent() { 47 47 this.components = new System.ComponentModel.Container(); 48 System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea 1= new System.Windows.Forms.DataVisualization.Charting.ChartArea();49 System.Windows.Forms.DataVisualization.Charting.Legend legend 1= 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(); 50 50 this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart(); 51 51 this.label1 = new System.Windows.Forms.Label(); 52 52 this.cmbSamples = new System.Windows.Forms.ComboBox(); 53 this.residualComboBox = new System.Windows.Forms.ComboBox(); 53 54 ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit(); 54 55 this.SuspendLayout(); … … 56 57 // chart 57 58 // 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 61 chartArea 1.Name = "ChartArea1";62 this.chart.ChartAreas.Add(chartArea 1);63 legend 1.Alignment = System.Drawing.StringAlignment.Center;64 legend 1.Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Top;65 legend 1.Name = "Legend1";66 this.chart.Legends.Add(legend 1);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); 67 68 this.chart.Location = new System.Drawing.Point(6, 28); 68 69 this.chart.Name = "chart"; … … 92 93 this.cmbSamples.SelectedIndexChanged += new System.EventHandler(this.cmbSamples_SelectedIndexChanged); 93 94 // 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 // 94 109 // RegressionSolutionErrorCharacteristicsCurveView 95 110 // 96 111 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 112 this.Controls.Add(this.residualComboBox); 97 113 this.Controls.Add(this.label1); 98 114 this.Controls.Add(this.cmbSamples); … … 111 127 protected System.Windows.Forms.Label label1; 112 128 protected System.Windows.Forms.ComboBox cmbSamples; 129 protected System.Windows.Forms.ComboBox residualComboBox; 113 130 } 114 131 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionErrorCharacteristicsCurveView.cs
r12365 r12493 25 25 using System.Windows.Forms; 26 26 using System.Windows.Forms.DataVisualization.Charting; 27 using HeuristicLab.Common; 27 28 using HeuristicLab.MainForm; 28 29 … … 45 46 cmbSamples.SelectedIndex = 0; 46 47 48 residualComboBox.SelectedIndex = 0; 49 47 50 chart.CustomizeAllChartAreas(); 48 chart.ChartAreas[0].AxisX.Title = "Absolute Error";51 chart.ChartAreas[0].AxisX.Title = residualComboBox.SelectedItem.ToString(); 49 52 chart.ChartAreas[0].AxisX.Minimum = 0.0; 50 53 chart.ChartAreas[0].AxisX.Maximum = 0.0; … … 109 112 110 113 AddRegressionSolution(Content); 114 115 chart.ChartAreas[0].AxisX.Title = residualComboBox.SelectedItem.ToString(); 111 116 } 112 117 … … 119 124 var residuals = GetResiduals(GetOriginalValues(), GetEstimatedValues(solution)); 120 125 121 122 126 var maxValue = residuals.Max(); 123 if (maxValue >= chart.ChartAreas[0].AxisX.Maximum) { 124 double scale = Math.Pow(10, Math.Floor(Math.Log10(maxValue))); 125 var maximum = scale * (1 + (int)(maxValue / scale)); 126 chart.ChartAreas[0].AxisX.Maximum = maximum; 127 } 127 double scale = Math.Pow(10, Math.Floor(Math.Log10(maxValue))); 128 var maximum = scale * (1 + (int)(maxValue / scale)); 129 chart.ChartAreas[0].AxisX.Maximum = maximum; 128 130 chart.ChartAreas[0].CursorX.Interval = residuals.Min() / 100; 129 131 … … 203 205 204 206 protected virtual List<double> GetResiduals(IEnumerable<double> originalValues, IEnumerable<double> estimatedValues) { 205 return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x - y)).ToList(); 207 switch (residualComboBox.SelectedItem.ToString()) { 208 case "Absolute error": return originalValues.Zip(estimatedValues, (x, y) => Math.Abs(x - y)).ToList(); 209 case "Squared error": return originalValues.Zip(estimatedValues, (x, y) => (x - y) * (x - y)).ToList(); 210 case "Relative error": return originalValues.Zip(estimatedValues, (x, y) => x.IsAlmost(0.0) ? -1 : Math.Abs((x - y) / x)) 211 .Where(x => x > 0) // remove entries where the original value is 0 212 .ToList(); 213 } 214 // should never happen 215 return new List<double>(); 206 216 } 207 217 … … 251 261 } 252 262 } 263 264 private void residualComboBox_SelectedIndexChanged(object sender, EventArgs e) { 265 UpdateChart(); 266 } 253 267 } 254 268 }
Note: See TracChangeset
for help on using the changeset viewer.