Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/29/16 17:09:15 (8 years ago)
Author:
bburlacu
Message:

#2597: Added RegressionSolutionTargetResponseGradientView and updated GradientChart.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.RegressionSolutionGradientView/HeuristicLab.Problems.DataAnalysis.Views/3.4/GradientChart.cs

    r13808 r13817  
    2323using System.Collections.Generic;
    2424using System.Drawing;
     25using System.Globalization;
    2526using System.Linq;
    2627using System.Windows.Forms;
     
    3233  public partial class GradientChart : EnhancedChart {
    3334    private ModifiableDataset internalDataset;
     35
     36    public bool ShowLegend { get; set; }
    3437
    3538    private bool useMedianValues;
     
    199202      if (points == 0)
    200203        return;
    201       CalculateAxisInterval();
    202204      Series.Clear();
    203205      var vla = VerticalLineAnnotation;
     
    212214        var p = series.Points.Last();
    213215        vla.X = p.XValue;
    214         var ta = new TextAnnotation {
    215           Text = string.Format("X: {0:0.000}, Y: {1:0.000}", p.XValue, p.YValues[0]),
    216           Visible = true,
    217           X = p.XValue,
    218           Y = p.YValues[0],
    219           AxisX = ChartAreas[0].AxisX,
    220           AxisY = ChartAreas[0].AxisY
    221         };
    222         ta.ClipToChartArea = "ChartArea1";
    223         ta.Name = series.Name;
    224         Annotations.Add(ta);
    225       }
     216        ChartAreas[0].AxisX.Title = Variable + " " + vla.X.ToString("N3", CultureInfo.CurrentCulture);
     217        //        var ta = new TextAnnotation {
     218        //          Text = string.Format("X: {0:0.000}, Y: {1:0.000}", p.XValue, p.YValues[0]),
     219        //          Visible = true,
     220        //          X = p.XValue,
     221        //          Y = p.YValues[0],
     222        //          AxisX = ChartAreas[0].AxisX,
     223        //          AxisY = ChartAreas[0].AxisY
     224        //        };
     225        //        ta.ClipToChartArea = "ChartArea1";
     226        //        ta.Name = series.Name;
     227        //        Annotations.Add(ta);
     228      }
     229      CalculateAxisInterval();
    226230      AddStripLines();
    227       AddLegends();
     231      if (ShowLegend)
     232        AddLegends();
    228233    }
    229234
     
    260265      var step = (max - min) / points;
    261266      var axisX = ChartAreas[0].AxisX;
    262       axisX.Title = Variable;
     267      axisX.Title = Variable + " : " + v.ToString("N3", CultureInfo.CurrentCulture);
    263268      var axisY = ChartAreas[0].AxisY;
    264269      axisY.Title = Target;
     
    290295      Legends.Clear();
    291296      var legend = new Legend();
    292       //      legend.Name = s.Name;
    293297      legend.Alignment = StringAlignment.Center;
    294298      legend.LegendStyle = LegendStyle.Row;
     
    302306    private void AddStripLines() {
    303307      var axisX = ChartAreas[0].AxisX;
    304       axisX.Title = Variable;
    305       var axisY = ChartAreas[0].AxisY;
    306       axisY.Title = ProblemData.TargetVariable;
    307308      axisX.StripLines.Clear();
    308309      axisX.StripLines.Add(new StripLine { BackColor = Color.FromArgb(30, Color.Green), IntervalOffset = axisX.Minimum, StripWidth = min - axisX.Minimum });
     
    317318      axis.Maximum = axisMax;
    318319      axis.Interval = axisInterval;
     320
     321      double ymin = 0, ymax = 0;
     322      foreach (var v in Series[0].Points.Select(x => x.YValues[0])) {
     323        if (ymin > v) ymin = v;
     324        if (ymax < v) ymax = v;
     325      }
     326      ChartUtil.CalculateAxisInterval(ymin, ymax, 5, out axisMin, out axisMax, out axisInterval);
     327      axis = ChartAreas[0].AxisY;
     328      axis.Minimum = axisMin;
     329      axis.Maximum = axisMax;
     330      axis.Interval = axisInterval;
    319331    }
    320332
     
    326338
    327339    #region events
     340    public event EventHandler VariableValueChanged;
     341    public void OnVariableValueChanged(object sender, EventArgs args) {
     342      var changed = VariableValueChanged;
     343      if (changed == null) return;
     344      changed(sender, args);
     345    }
     346
    328347    public event EventHandler ChartPropertyChanged;
    329348    public void OnChartPropertyChanged(object sender, EventArgs args) {
     
    353372        e.NewLocationX = axisX.Minimum;
    354373      var x = e.NewLocationX;
    355 
    356       //      var va = VerticalLineAnnotation;
    357       //      Annotations.Clear();
    358       //      Annotations.Add(va);
     374      internalDataset.SetVariableValue(x, Variable, 0);
    359375      for (int i = 0; i < solutionList.Count; ++i) {
    360376        var y = GetEstimatedValue(solutionList[i], x);
     
    363379        s.Points[n - 1] = new DataPoint(x, y) { MarkerColor = Color.Red, MarkerSize = 5 };
    364380      }
    365       foreach (var annotation in Annotations.OfType<TextAnnotation>()) {
    366         var p = Series[annotation.Name].Points.Last();
    367         annotation.Text = string.Format("X: {0:0.000}, Y: {1:0.000}", p.XValue, p.YValues[0]);
    368         annotation.X = p.XValue;
    369         annotation.Y = p.YValues[0];
    370       }
     381      ChartAreas[0].AxisX.Title = Variable + " : " + x.ToString("N3", CultureInfo.CurrentCulture);
    371382      Update();
     383      OnVariableValueChanged(this, EventArgs.Empty);
    372384    }
    373385
     
    390402      }
    391403    }
    392     #endregion
    393404
    394405    private void GradientChart_DragDrop(object sender, DragEventArgs e) {
     
    411422      }
    412423    }
     424    #endregion
    413425  }
    414426}
Note: See TracChangeset for help on using the changeset viewer.