Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/15/11 14:54:43 (13 years ago)
Author:
abeham
Message:

#1465

  • updated branch with changes from trunk
  • fixed some bugs
  • introduced secondary x-axis option
Location:
branches/histogram
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/histogram

  • branches/histogram/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.Designer.cs

    r6010 r6011  
    5757      this.commonGroupBox = new System.Windows.Forms.GroupBox();
    5858      this.histoGramGroupBox = new System.Windows.Forms.GroupBox();
     59      this.secondXAxisCheckBox = new System.Windows.Forms.CheckBox();
    5960      ((System.ComponentModel.ISupportInitialize)(this.binsNumericUpDown)).BeginInit();
    6061      this.commonGroupBox.SuspendLayout();
     
    104105      this.startIndexZeroCheckBox.AutoSize = true;
    105106      this.startIndexZeroCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
    106       this.startIndexZeroCheckBox.Location = new System.Drawing.Point(17, 98);
     107      this.startIndexZeroCheckBox.Location = new System.Drawing.Point(17, 121);
    107108      this.startIndexZeroCheckBox.Name = "startIndexZeroCheckBox";
    108109      this.startIndexZeroCheckBox.Size = new System.Drawing.Size(89, 17);
     
    164165                  | System.Windows.Forms.AnchorStyles.Right)));
    165166      this.commonGroupBox.Controls.Add(this.colorButton);
     167      this.commonGroupBox.Controls.Add(this.secondXAxisCheckBox);
    166168      this.commonGroupBox.Controls.Add(this.secondYAxisCheckBox);
    167169      this.commonGroupBox.Controls.Add(this.label1);
     
    171173      this.commonGroupBox.Location = new System.Drawing.Point(3, 3);
    172174      this.commonGroupBox.Name = "commonGroupBox";
    173       this.commonGroupBox.Size = new System.Drawing.Size(473, 122);
     175      this.commonGroupBox.Size = new System.Drawing.Size(473, 142);
    174176      this.commonGroupBox.TabIndex = 7;
    175177      this.commonGroupBox.TabStop = false;
     
    183185      this.histoGramGroupBox.Controls.Add(this.exactBinsCheckBox);
    184186      this.histoGramGroupBox.Controls.Add(this.label3);
    185       this.histoGramGroupBox.Location = new System.Drawing.Point(3, 131);
     187      this.histoGramGroupBox.Location = new System.Drawing.Point(3, 151);
    186188      this.histoGramGroupBox.Name = "histoGramGroupBox";
    187189      this.histoGramGroupBox.Size = new System.Drawing.Size(473, 49);
     
    190192      this.histoGramGroupBox.Text = "Histogram";
    191193      //
     194      // secondXAxisCheckBox
     195      //
     196      this.secondXAxisCheckBox.AutoSize = true;
     197      this.secondXAxisCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
     198      this.secondXAxisCheckBox.Location = new System.Drawing.Point(8, 98);
     199      this.secondXAxisCheckBox.Name = "secondXAxisCheckBox";
     200      this.secondXAxisCheckBox.Size = new System.Drawing.Size(98, 17);
     201      this.secondXAxisCheckBox.TabIndex = 1;
     202      this.secondXAxisCheckBox.Text = "Second X Axis:";
     203      this.secondXAxisCheckBox.UseVisualStyleBackColor = true;
     204      this.secondXAxisCheckBox.CheckedChanged += new System.EventHandler(this.secondXAxisCheckBox_CheckedChanged);
     205      //
    192206      // DataRowVisualPropertiesControl
    193207      //
     
    197211      this.Controls.Add(this.commonGroupBox);
    198212      this.Name = "DataRowVisualPropertiesControl";
    199       this.Size = new System.Drawing.Size(479, 185);
     213      this.Size = new System.Drawing.Size(479, 205);
    200214      ((System.ComponentModel.ISupportInitialize)(this.binsNumericUpDown)).EndInit();
    201215      this.commonGroupBox.ResumeLayout(false);
     
    221235    private System.Windows.Forms.GroupBox commonGroupBox;
    222236    private System.Windows.Forms.GroupBox histoGramGroupBox;
     237    private System.Windows.Forms.CheckBox secondXAxisCheckBox;
    223238  }
    224239}
  • branches/histogram/HeuristicLab.Analysis.Views/3.3/DataRowVisualPropertiesControl.cs

    r6010 r6011  
    5353          colorButton.BackColor = SystemColors.Control;
    5454          secondYAxisCheckBox.Checked = false;
     55          secondXAxisCheckBox.Checked = false;
    5556          startIndexZeroCheckBox.Checked = false;
    5657          binsNumericUpDown.Value = 1;
     
    5859        } else {
    5960          chartTypeComboBox.SelectedItem = Content.ChartType;
    60           colorButton.BackColor = Content.Color;
     61          if (Content.Color.IsEmpty) {
     62            colorButton.BackColor = SystemColors.Control;
     63            colorButton.Text = "?";
     64          } else colorButton.BackColor = Content.Color;
    6165          secondYAxisCheckBox.Checked = Content.SecondYAxis;
     66          secondXAxisCheckBox.Checked = Content.SecondXAxis;
    6267          startIndexZeroCheckBox.Checked = Content.StartIndexZero;
    6368          binsNumericUpDown.Value = Content.Bins;
     
    8590        Content.Color = colorDialog.Color;
    8691        colorButton.BackColor = Content.Color;
     92        colorButton.Text = String.Empty;
    8793      }
    8894    }
     
    9197      if (!SuppressEvents && Content != null) {
    9298        Content.SecondYAxis = secondYAxisCheckBox.Checked;
     99      }
     100    }
     101
     102    private void secondXAxisCheckBox_CheckedChanged(object sender, EventArgs e) {
     103      if (!SuppressEvents && Content != null) {
     104        Content.SecondXAxis = secondXAxisCheckBox.Checked;
    93105      }
    94106    }
  • branches/histogram/HeuristicLab.Analysis.Views/3.3/DataTableView.cs

    r6010 r6011  
    142142      }
    143143      series.YAxisType = row.VisualProperties.SecondYAxis ? AxisType.Secondary : AxisType.Primary;
     144      series.XAxisType = row.VisualProperties.SecondXAxis ? AxisType.Secondary : AxisType.Primary;
    144145      if (row.VisualProperties.Color != Color.Empty) series.Color = row.VisualProperties.Color;
    145146      series.ToolTip = row.Name + " X = #INDEX, Y = #VAL";
     
    305306            chart.Series[row.Name].ChartType = SeriesChartType.Column;
    306307            chart.Series[row.Name]["PointWidth"] = "1";
     308            CalculateHistogram(chart.Series[row.Name], row);
    307309            break;
    308310          default:
     
    311313        }
    312314        chart.Series[row.Name].YAxisType = row.VisualProperties.SecondYAxis ? AxisType.Secondary : AxisType.Primary;
     315        chart.Series[row.Name].XAxisType = row.VisualProperties.SecondXAxis ? AxisType.Secondary : AxisType.Primary;
    313316        if (row.VisualProperties.Color != Color.Empty) chart.Series[row.Name].Color = row.VisualProperties.Color;
    314317        chart.ChartAreas[0].RecalculateAxesScale();
     
    444447
    445448    private void FillSeriesWithRowValues(Series series, DataRow row) {
    446       if (row.VisualProperties.ChartType == DataRowVisualProperties.DataRowChartType.Histogram) {
    447         series.Points.Clear();
    448         if (!row.Values.Any()) return;
    449         int bins = row.VisualProperties.Bins;
    450 
    451         double minValue = row.Values.Min();
    452         double maxValue = row.Values.Max();
    453         double intervalWidth = (maxValue - minValue) / bins;
    454         if (intervalWidth <= 0) return;
    455 
    456         if (!row.VisualProperties.ExactBins) {
    457           intervalWidth = HumanRoundRange(intervalWidth);
    458           minValue = Math.Floor(minValue / intervalWidth) * intervalWidth;
    459           maxValue = Math.Ceiling(maxValue / intervalWidth) * intervalWidth;
    460         }
    461 
    462         double current = minValue, intervalCenter = intervalWidth / 2.0;
    463         int frequency = 0;
    464         foreach (double v in row.Values.Where(x => !IsInvalidValue(x)).OrderBy(x => x)) {
    465           while (v > current + intervalWidth) {
    466             series.Points.AddXY(current + intervalCenter, frequency);
    467             current += intervalWidth;
    468             frequency = 0;
    469           }
    470           frequency++;
    471         }
    472         series.Points.AddXY(current + intervalCenter, frequency);
    473       } else {
    474         for (int i = 0; i < row.Values.Count; i++) {
    475           var value = row.Values[i];
    476           DataPoint point = new DataPoint();
    477           point.XValue = row.VisualProperties.StartIndexZero ? i : i + 1;
    478           if (IsInvalidValue(value))
    479             point.IsEmpty = true;
    480           else
    481             point.YValues = new double[] { value };
    482           series.Points.Add(point);
    483         }
    484       }
     449      switch (row.VisualProperties.ChartType) {
     450        case DataRowVisualProperties.DataRowChartType.Histogram:
     451          CalculateHistogram(series, row);
     452          break;
     453        default: {
     454            for (int i = 0; i < row.Values.Count; i++) {
     455              var value = row.Values[i];
     456              DataPoint point = new DataPoint();
     457              point.XValue = row.VisualProperties.StartIndexZero ? i : i + 1;
     458              if (IsInvalidValue(value))
     459                point.IsEmpty = true;
     460              else
     461                point.YValues = new double[] { value };
     462              series.Points.Add(point);
     463            }
     464          }
     465          break;
     466      }
     467    }
     468
     469    private void CalculateHistogram(Series series, DataRow row) {
     470      series.Points.Clear();
     471      if (!row.Values.Any()) return;
     472      int bins = row.VisualProperties.Bins;
     473
     474      double minValue = row.Values.Min();
     475      double maxValue = row.Values.Max();
     476      double intervalWidth = (maxValue - minValue) / bins;
     477      if (intervalWidth <= 0) return;
     478
     479      if (!row.VisualProperties.ExactBins) {
     480        intervalWidth = HumanRoundRange(intervalWidth);
     481        minValue = Math.Floor(minValue / intervalWidth) * intervalWidth;
     482        maxValue = Math.Ceiling(maxValue / intervalWidth) * intervalWidth;
     483      }
     484
     485      double current = minValue, intervalCenter = intervalWidth / 2.0;
     486      int frequency = 0;
     487      foreach (double v in row.Values.Where(x => !IsInvalidValue(x)).OrderBy(x => x)) {
     488        while (v > current + intervalWidth) {
     489          series.Points.AddXY(current + intervalCenter, frequency);
     490          current += intervalWidth;
     491          frequency = 0;
     492        }
     493        frequency++;
     494      }
     495      series.Points.AddXY(current + intervalCenter, frequency);
    485496    }
    486497
  • branches/histogram/HeuristicLab.Analysis.Views/3.3/DataTableVisualPropertiesDialog.cs

    r6010 r6011  
    6464    private void cancelButton_Click(object sender, System.EventArgs e) {
    6565      DialogResult = DialogResult.Cancel;
    66       Content.VisualProperties = originalDataTableVPs;
    6766      foreach (DataRow row in Content.Rows) {
    6867        row.VisualProperties = originalDataRowVPs[row.Name];
    6968      }
     69      Content.VisualProperties = originalDataTableVPs;
    7070      Close();
    7171    }
Note: See TracChangeset for help on using the changeset viewer.