Ignore:
Timestamp:
06/30/17 16:41:06 (2 years ago)
Author:
pfleck
Message:

#2713 #2715 #2765
Merged to stable

  • 14435-14439,14493,14516,14519,14982,14987,14992,15042 (from #2713)
  • 14457-14458,14508,14582,14740,14984,15068,15095 (from #2715)
  • 14860-14861 (from #2765)
Location:
stable
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Analysis

  • stable/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs

    r14186 r15097  
    123123      }
    124124    }
    125     private int bins;
    126     public int Bins {
    127       get { return bins; }
    128       set {
    129         if (bins != value) {
    130           bins = value;
    131           OnPropertyChanged("Bins");
    132         }
    133       }
    134     }
    135     private bool exactBins;
    136     public bool ExactBins {
    137       get { return exactBins; }
    138       set {
    139         if (exactBins != value) {
    140           exactBins = value;
    141           OnPropertyChanged("ExactBins");
    142         }
    143       }
    144     }
     125
    145126    private double scaleFactor;
    146127    public double ScaleFactor {
     
    215196      set { lineWidth = value; }
    216197    }
    217     [Storable(Name = "Bins")]
    218     private int StorableBins {
    219       get { return bins; }
    220       set { bins = value; }
    221     }
    222     [Storable(Name = "ExactBins")]
    223     private bool StorableExactBins {
    224       get { return exactBins; }
    225       set { exactBins = value; }
    226     }
    227198    [Storable(Name = "ScaleFactor")]
    228199    private double StorableScaleFactor {
     
    240211      set { displayName = value; }
    241212    }
     213    #endregion
     214
     215    #region Histogram Properties - Backwards Compatability
     216    internal enum DataRowHistogramAggregation {
     217      Overlapping,
     218      SideBySide,
     219      Stacked
     220    }
     221
     222    internal int? Bins { get; private set; }
     223    internal bool? ExactBins { get; private set; }
     224    internal DataRowHistogramAggregation? Aggregation { get; private set; }
     225
     226    [Storable(Name = "Bins", AllowOneWay = true)]
     227    private int StorableBins { set { Bins = value; } }
     228    [Storable(Name = "ExactBins", AllowOneWay = true)]
     229    private bool StorableExactBins { set { ExactBins = value; } }
     230    [Storable(Name = "Aggregation", AllowOneWay = true)]
     231    private DataRowHistogramAggregation StorableAggregation { set { Aggregation = value; } }
    242232    #endregion
    243233
     
    253243      this.startIndexZero = original.startIndexZero;
    254244      this.lineWidth = original.lineWidth;
    255       this.bins = original.bins;
    256       this.exactBins = original.exactBins;
    257245      this.scaleFactor = original.scaleFactor;
    258246      this.displayName = original.displayName;
     
    267255      startIndexZero = false;
    268256      lineWidth = 1;
    269       bins = 10;
    270       exactBins = false;
    271257      scaleFactor = 1.0;
    272258      displayName = String.Empty;
     
    294280      if (secondXAxis == default(bool)
    295281        && lineStyle == default(DataRowLineStyle)
    296         && lineWidth == default(int) && bins == default(int) && exactBins == default(bool)
    297282        && displayName == default(string)) {
    298283        secondXAxis = false;
    299284        lineStyle = DataRowLineStyle.Solid;
    300285        lineWidth = 1;
    301         bins = 10;
    302         exactBins = false;
    303286        displayName = String.Empty;
    304287      }
  • stable/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs

    r14186 r15097  
    112112      if (VisualProperties == null) VisualProperties = new DataTableVisualProperties(name);
    113113      if (VisualProperties.Title == null) VisualProperties.Title = name;
     114
     115      #region Backwards Compatability Histogram Visual Properties
     116      var rowProperties = Rows.Select(r => r.VisualProperties).ToList();
     117      if (rowProperties.Any(r => r.Bins.HasValue))
     118        VisualProperties.HistogramBins = rowProperties.Where(r => r.Bins.HasValue).Max(r => r.Bins.Value);
     119      if (rowProperties.Any(r => r.ExactBins.HasValue))
     120        VisualProperties.HistogramExactBins = rowProperties.Where(r => r.ExactBins.HasValue).Any(r => r.ExactBins.Value);
     121      if (rowProperties.Any(r => r.Aggregation.HasValue)) {
     122        var maxOccurrence = rowProperties
     123          .Where(r => r.Aggregation.HasValue).Select(r => r.Aggregation.Value)
     124          .GroupBy(x => x).OrderByDescending(x => x.Count())
     125          .First().Key;
     126        VisualProperties.HistogramAggregation = (DataTableVisualProperties.DataTableHistogramAggregation)maxOccurrence;
     127      }
     128      #endregion
    114129    }
    115130    #endregion
  • stable/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs

    r14186 r15097  
    2020#endregion
    2121
     22using System;
     23using System.ComponentModel;
     24using System.Drawing;
    2225using HeuristicLab.Common;
    2326using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    24 using System.ComponentModel;
    25 using System.Drawing;
    2627
    2728namespace HeuristicLab.Analysis {
     
    3132  [StorableClass]
    3233  public class DataTableVisualProperties : DeepCloneable, INotifyPropertyChanged {
     34
     35    #region Histogram Aggregation
     36    public enum DataTableHistogramAggregation {
     37      Overlapping,
     38      SideBySide,
     39      Stacked
     40    }
     41    #endregion
     42
    3343    private Font titleFont;
    3444    public Font TitleFont {
     
    352362        secondYAxisLogScale = value;
    353363        OnPropertyChanged("SecondYAxisLogScale");
     364      }
     365    }
     366
     367    private int histogramBins;
     368    public int HistogramBins {
     369      get { return histogramBins; }
     370      set {
     371        if (histogramBins != value) {
     372          histogramBins = value;
     373          OnPropertyChanged("HistogramBins");
     374        }
     375      }
     376    }
     377
     378    private bool histogramExactBins;
     379    public bool HistogramExactBins {
     380      get { return histogramExactBins; }
     381      set {
     382        if (histogramExactBins != value) {
     383          histogramExactBins = value;
     384          OnPropertyChanged("HistogramExactBins");
     385        }
     386      }
     387    }
     388
     389    private DataTableHistogramAggregation histogramAggregation;
     390    public DataTableHistogramAggregation HistogramAggregation {
     391      get { return histogramAggregation; }
     392      set {
     393        if (histogramAggregation != value) {
     394          histogramAggregation = value;
     395          OnPropertyChanged("HistogramAggregation");
     396        }
    354397      }
    355398    }
     
    500543      get { return secondYAxisLogScale; }
    501544      set { secondYAxisLogScale = value; }
     545    }
     546    [Storable(Name = "HistogramBins", DefaultValue = 10)]
     547    private int StorableHistogramBins {
     548      get { return histogramBins; }
     549      set { histogramBins = value; }
     550    }
     551    [Storable(Name = "HistogramExactBins", DefaultValue = false)]
     552    private bool StorableHistogramExactBins {
     553      get { return histogramExactBins; }
     554      set { histogramExactBins = value; }
     555    }
     556    [Storable(Name = "HistogramAggregation", DefaultValue = DataTableHistogramAggregation.Overlapping)]
     557    private DataTableHistogramAggregation StorableHistogramAggregation {
     558      get { return histogramAggregation; }
     559      set { histogramAggregation = value; }
    502560    }
    503561    #endregion
     
    536594      this.yAxisLogScale = original.yAxisLogScale;
    537595      this.secondYAxisLogScale = original.secondYAxisLogScale;
     596      this.histogramBins = original.histogramBins;
     597      this.histogramExactBins = original.histogramExactBins;
     598      this.histogramAggregation = original.histogramAggregation;
    538599    }
    539600    public DataTableVisualProperties() {
     
    565626      this.yAxisLogScale = false;
    566627      this.secondYAxisLogScale = false;
     628      histogramBins = 10;
     629      histogramExactBins = false;
     630      histogramAggregation = DataTableHistogramAggregation.Overlapping;
    567631    }
    568632    public DataTableVisualProperties(string title)
  • stable/HeuristicLab.Analysis/3.3/DataVisualization/ScatterPlotDataRowVisualProperties.cs

    r14186 r15097  
    4545    }
    4646    #endregion
     47    #region
     48    public enum ScatterPlotDataRowRegressionType {
     49      None,
     50      Linear,
     51      Polynomial,
     52      Exponential,
     53      Logarithmic,
     54      Power
     55    }
     56    #endregion
    4757
    4858    private Color color;
     
    101111      }
    102112    }
     113    private ScatterPlotDataRowRegressionType regressionType;
     114    public ScatterPlotDataRowRegressionType RegressionType {
     115      get { return regressionType; }
     116      set {
     117        if (regressionType != value) {
     118          regressionType = value;
     119          OnPropertyChanged("RegressionType");
     120        }
     121      }
     122    }
     123    private int polynomialRegressionOrder;
     124    public int PolynomialRegressionOrder {
     125      get { return polynomialRegressionOrder; }
     126      set {
     127        if (polynomialRegressionOrder != value) {
     128          polynomialRegressionOrder = value;
     129          OnPropertyChanged("PolynomialRegressionOrder");
     130        }
     131      }
     132    }
     133    private bool isRegressionVisibleInLegend;
     134    public bool IsRegressionVisibleInLegend {
     135      get { return isRegressionVisibleInLegend; }
     136      set {
     137        if (isRegressionVisibleInLegend != value) {
     138          isRegressionVisibleInLegend = value;
     139          OnPropertyChanged("IsRegressionVisibleInLegend");
     140        }
     141      }
     142    }
     143    private string regressionDisplayName;
     144    public string RegressionDisplayName {
     145      get { return regressionDisplayName ?? string.Empty; }
     146      set {
     147        if (regressionDisplayName != value) {
     148          if (value == null && regressionDisplayName != string.Empty) {
     149            regressionDisplayName = string.Empty;
     150            OnPropertyChanged("RegressionDisplayName");
     151          } else if (value != null) {
     152            regressionDisplayName = value;
     153            OnPropertyChanged("RegressionDisplayName");
     154          }
     155        }
     156      }
     157    }
    103158
    104159    #region Persistence Properties
     
    127182      get { return displayName; }
    128183      set { displayName = value; }
     184    }
     185    [Storable(Name = "RegressionType")]
     186    private ScatterPlotDataRowRegressionType StorableRegressionType {
     187      get { return regressionType; }
     188      set { regressionType = value; }
     189    }
     190    [Storable(Name = "PolynomialRegressionOrder", DefaultValue = 2)]
     191    private int StorablePolynomialRegressionOrder {
     192      get { return polynomialRegressionOrder; }
     193      set { polynomialRegressionOrder = value; }
     194    }
     195    [Storable(Name = "IsRegressionVisibleInLegend", DefaultValue = true)]
     196    private bool StorableIsRegressionVisibleInLegend {
     197      get { return isRegressionVisibleInLegend; }
     198      set { isRegressionVisibleInLegend = value; }
     199    }
     200    [Storable(Name = "RegressionDisplayName")]
     201    private string StorableRegressionDisplayName {
     202      get { return regressionDisplayName; }
     203      set { regressionDisplayName = value; }
    129204    }
    130205    #endregion
     
    139214      this.displayName = original.displayName;
    140215      this.isVisibleInLegend = original.isVisibleInLegend;
     216      this.regressionType = original.regressionType;
     217      this.polynomialRegressionOrder = original.polynomialRegressionOrder;
     218      this.isRegressionVisibleInLegend = original.isRegressionVisibleInLegend;
     219      this.regressionDisplayName = original.regressionDisplayName;
    141220    }
    142221    public ScatterPlotDataRowVisualProperties() {
     
    146225      displayName = String.Empty;
    147226      isVisibleInLegend = true;
     227      regressionType = ScatterPlotDataRowRegressionType.None;
     228      polynomialRegressionOrder = 2;
     229      isRegressionVisibleInLegend = true;
     230      regressionDisplayName = string.Empty;
    148231    }
    149232    public ScatterPlotDataRowVisualProperties(string displayName)
Note: See TracChangeset for help on using the changeset viewer.