Changeset 3707


Ignore:
Timestamp:
05/07/10 16:38:19 (12 years ago)
Author:
gkronber
Message:

Added adjustment of cursor interval based on range of displayed values in the RunCollectionBubbleChartView ScatterPlotView and LineChartView. #893

Location:
trunk/sources
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs

    r3701 r3707  
    6565      this.chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
    6666      this.chart.ChartAreas[0].CursorY.IsUserSelectionEnabled = true;
    67       this.chart.ChartAreas[0].CursorX.Interval = 0;
    68       this.chart.ChartAreas[0].CursorY.Interval = 0;
     67      this.chart.ChartAreas[0].CursorX.Interval = 1;
     68      this.chart.ChartAreas[0].CursorY.Interval = 1;
    6969      this.chart.ChartAreas[0].AxisX.ScaleView.Zoomable = !this.isSelecting;
    7070      this.chart.ChartAreas[0].AxisY.ScaleView.Zoomable = !this.isSelecting;
     
    134134      } else
    135135        AddDataPoint(run);
     136        UpdateCursorInterval();
     137
    136138
    137139      if (this.chart.Series[0].Points.Count == 0)
     
    146148      UpdateComboBoxes();
    147149      UpdateDataPoints();
    148       foreach (IRun run in Content)
    149         UpdateRun(run);
    150150    }
    151151    private void Content_ColumnNamesChanged(object sender, EventArgs e) {
     
    218218        else
    219219          noRunsLabel.Visible = false;
     220        UpdateCursorInterval();
    220221      }
    221222    }
     
    311312      return value;
    312313    }
     314    private void UpdateCursorInterval() {
     315      Series series = chart.Series[0];
     316      double[] xValues = (from point in series.Points
     317                          where !point.IsEmpty
     318                          select point.XValue)
     319                    .DefaultIfEmpty(1.0)
     320                    .ToArray();
     321      double[] yValues = (from point in series.Points
     322                          where !point.IsEmpty
     323                          select point.YValues[0])
     324                    .DefaultIfEmpty(1.0)
     325                    .ToArray();
     326
     327      double xRange = xValues.Max() - xValues.Min();
     328      double yRange = yValues.Max() - yValues.Min();
     329      if(xRange.IsAlmost(0.0)) xRange = 1.0;
     330      if(yRange.IsAlmost(0.0)) yRange = 1.0;
     331      double xDigits = (int)Math.Log10(xRange) - 3;
     332      double yDigits = (int)Math.Log10(yRange) - 3;
     333      double xZoomInterval = Math.Pow(10, xDigits);
     334      double yZoomInterval = Math.Pow(10, yDigits);
     335      this.chart.ChartAreas[0].CursorX.Interval = xZoomInterval;
     336      this.chart.ChartAreas[0].CursorY.Interval = yZoomInterval;
     337    }
    313338
    314339    #region drag and drop and tooltip
  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/LineChartView.cs

    r3566 r3707  
    5555      this.chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
    5656      this.chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
    57       this.chart.ChartAreas[0].CursorX.Interval = 0;
     57      this.chart.ChartAreas[0].CursorX.Interval = 1;
    5858
    5959      this.chart.ChartAreas[0].CursorY.IsUserSelectionEnabled = true;
     
    7575      this.chart.Series[ESTIMATEDVALUES_SERIES_NAME].Points.DataBindY(Content.EstimatedValues.ToArray());
    7676      this.chart.Series[ESTIMATEDVALUES_SERIES_NAME].Tag = Content;
     77      UpdateCursorInterval();
     78    }
     79
     80    private void UpdateCursorInterval() {
     81      var estimatedValues = this.chart.Series[ESTIMATEDVALUES_SERIES_NAME].Points.Select(x => x.YValues[0]).DefaultIfEmpty(1.0);
     82      var targetValues = this.chart.Series[TARGETVARIABLE_SERIES_NAME].Points.Select(x => x.YValues[0]).DefaultIfEmpty(1.0);
     83      double estimatedValuesRange = estimatedValues.Max() - estimatedValues.Min();
     84      double targetValuesRange = targetValues.Max() - targetValues.Min();
     85      double interestingValuesRange = Math.Min(Math.Max(targetValuesRange, 1.0), Math.Max(estimatedValuesRange, 1.0));
     86      double digits = (int)Math.Log10(interestingValuesRange) - 3;
     87      double yZoomInterval = Math.Max(Math.Pow(10, digits), 10E-5);
     88      this.chart.ChartAreas[0].CursorY.Interval = yZoomInterval;
    7789    }
    7890
     
    112124            s.LegendText = Content.ItemName;
    113125            this.UpdateStripLines();
     126            UpdateCursorInterval();
    114127          }
    115128        }
  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ScatterPlotView.cs

    r3566 r3707  
    7272      this.chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
    7373      this.chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
    74       this.chart.ChartAreas[0].CursorX.Interval = 0;
    75       this.chart.ChartAreas[0].CursorY.Interval = 0;
     74      this.chart.ChartAreas[0].CursorX.Interval = 1;
     75      this.chart.ChartAreas[0].CursorY.Interval = 1;
    7676
    7777      this.chart.ChartAreas[0].AxisY.Title = "Target Values";
     
    120120      }
    121121    }
     122
     123    private void UpdateCursorInterval() {
     124      var estimatedValues = this.chart.Series[ALL_SERIES].Points.Select(x => x.YValues[0]).DefaultIfEmpty(1.0);
     125      var targetValues = this.chart.Series[ALL_SERIES].Points.Select(x => x.YValues[1]).DefaultIfEmpty(1.0);
     126      double estimatedValuesRange = estimatedValues.Max() - estimatedValues.Min();
     127      double targetValuesRange = targetValues.Max() - targetValues.Min();
     128      double interestingValuesRange = Math.Min(Math.Max(targetValuesRange, 1.0), Math.Max(estimatedValuesRange, 1.0));
     129      double digits = (int)Math.Log10(interestingValuesRange) - 3;
     130      double zoomInterval = Math.Max(Math.Pow(10, digits), 10E-5);
     131      this.chart.ChartAreas[0].CursorX.Interval = zoomInterval;
     132      this.chart.ChartAreas[0].CursorY.Interval = zoomInterval;
     133    }
     134
    122135
    123136    private void UpdateSeries() {
     
    150163        this.chart.ChartAreas[0].AxisY.Maximum = max;
    151164        this.chart.ChartAreas[0].AxisY.Minimum = min;
     165        UpdateCursorInterval();
    152166      }
    153167    }
     
    156170      this.chart.Series[ALL_SERIES].Points.Clear();
    157171      this.chart.Series[TRAINING_SERIES].Points.Clear();
    158       this.chart.Series[TEST_SERIES].Points.Clear();
     172      this.chart.Series[TEST_SERIES].Points.Clear();     
    159173    }
    160174
     
    190204        series.Points.DataBindXY(predictedValues, "", targetValues, "");
    191205        this.chart.Legends[series.Legend].ForeColor = Color.Black;
     206        UpdateCursorInterval();
    192207      }
    193208    }
Note: See TracChangeset for help on using the changeset viewer.