- Timestamp:
- 07/24/17 09:51:10 (7 years ago)
- Location:
- branches/PerformanceComparison/HeuristicLab.Analysis
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PerformanceComparison/HeuristicLab.Analysis
- Property svn:mergeinfo changed
/branches/symbreg-factors-2650/HeuristicLab.Analysis (added) merged: 14497-14499,14589,14591-14592,14751,14825 /trunk/sources/HeuristicLab.Analysis merged: 14826,15048,15068
- Property svn:mergeinfo changed
-
branches/PerformanceComparison/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs
r14600 r15282 52 52 } 53 53 #endregion 54 #region Histogram Aggregation55 public enum DataRowHistogramAggregation {56 Overlapping,57 SideBySide,58 Stacked59 }60 #endregion61 54 62 55 private DataRowChartType chartType; … … 130 123 } 131 124 } 132 private int bins; 133 public int Bins { 134 get { return bins; } 135 set { 136 if (bins != value) { 137 bins = value; 138 OnPropertyChanged("Bins"); 139 } 140 } 141 } 142 private bool exactBins; 143 public bool ExactBins { 144 get { return exactBins; } 145 set { 146 if (exactBins != value) { 147 exactBins = value; 148 OnPropertyChanged("ExactBins"); 149 } 150 } 151 } 152 private DataRowHistogramAggregation aggregation; 153 public DataRowHistogramAggregation Aggregation { 154 get { return aggregation; } 155 set { 156 if (aggregation != value) { 157 aggregation = value; 158 OnPropertyChanged("Aggregation"); 159 } 160 } 161 } 125 162 126 private double scaleFactor; 163 127 public double ScaleFactor { … … 232 196 set { lineWidth = value; } 233 197 } 234 [Storable(Name = "Bins")]235 private int StorableBins {236 get { return bins; }237 set { bins = value; }238 }239 [Storable(Name = "ExactBins")]240 private bool StorableExactBins {241 get { return exactBins; }242 set { exactBins = value; }243 }244 [Storable(Name = "Aggregation", DefaultValue = DataRowHistogramAggregation.Overlapping)]245 private DataRowHistogramAggregation StorableAggregation {246 get { return aggregation; }247 set { aggregation = value; }248 }249 198 [Storable(Name = "ScaleFactor")] 250 199 private double StorableScaleFactor { … … 262 211 set { displayName = value; } 263 212 } 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; } } 264 232 #endregion 265 233 … … 275 243 this.startIndexZero = original.startIndexZero; 276 244 this.lineWidth = original.lineWidth; 277 this.bins = original.bins;278 this.exactBins = original.exactBins;279 this.aggregation = original.aggregation;280 245 this.scaleFactor = original.scaleFactor; 281 246 this.displayName = original.displayName; … … 290 255 startIndexZero = false; 291 256 lineWidth = 1; 292 bins = 10;293 exactBins = false;294 aggregation = DataRowHistogramAggregation.Overlapping;295 257 scaleFactor = 1.0; 296 258 displayName = String.Empty; … … 318 280 if (secondXAxis == default(bool) 319 281 && lineStyle == default(DataRowLineStyle) 320 && lineWidth == default(int) && bins == default(int) && exactBins == default(bool)321 282 && displayName == default(string)) { 322 283 secondXAxis = false; 323 284 lineStyle = DataRowLineStyle.Solid; 324 285 lineWidth = 1; 325 bins = 10;326 exactBins = false;327 286 displayName = String.Empty; 328 287 } -
branches/PerformanceComparison/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs
r14600 r15282 112 112 if (VisualProperties == null) VisualProperties = new DataTableVisualProperties(name); 113 113 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 114 129 } 115 130 #endregion -
branches/PerformanceComparison/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs
r14600 r15282 20 20 #endregion 21 21 22 using System; 23 using System.ComponentModel; 24 using System.Drawing; 22 25 using HeuristicLab.Common; 23 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 24 using System.ComponentModel;25 using System.Drawing;26 27 27 28 namespace HeuristicLab.Analysis { … … 31 32 [StorableClass] 32 33 public class DataTableVisualProperties : DeepCloneable, INotifyPropertyChanged { 34 35 #region Histogram Aggregation 36 public enum DataTableHistogramAggregation { 37 Overlapping, 38 SideBySide, 39 Stacked 40 } 41 #endregion 42 33 43 private Font titleFont; 34 44 public Font TitleFont { … … 352 362 secondYAxisLogScale = value; 353 363 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 } 354 397 } 355 398 } … … 500 543 get { return secondYAxisLogScale; } 501 544 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; } 502 560 } 503 561 #endregion … … 536 594 this.yAxisLogScale = original.yAxisLogScale; 537 595 this.secondYAxisLogScale = original.secondYAxisLogScale; 596 this.histogramBins = original.histogramBins; 597 this.histogramExactBins = original.histogramExactBins; 598 this.histogramAggregation = original.histogramAggregation; 538 599 } 539 600 public DataTableVisualProperties() { … … 565 626 this.yAxisLogScale = false; 566 627 this.secondYAxisLogScale = false; 628 histogramBins = 10; 629 histogramExactBins = false; 630 histogramAggregation = DataTableHistogramAggregation.Overlapping; 567 631 } 568 632 public DataTableVisualProperties(string title) -
branches/PerformanceComparison/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataRow.cs
r12766 r15282 30 30 31 31 namespace HeuristicLab.Analysis { 32 [Item("IndexedDataRow", "A data row that contains time series.")]32 [Item("IndexedDataRow", "A data row that contains a series of points.")] 33 33 [StorableClass] 34 34 public class IndexedDataRow<T> : NamedItem { … … 105 105 OnVisualPropertiesChanged(); 106 106 } 107 protected override void OnNameChanged() { 108 base.OnNameChanged(); 109 VisualProperties.DisplayName = Name; 110 } 107 111 } 108 112 } -
branches/PerformanceComparison/HeuristicLab.Analysis/3.3/DataVisualization/IndexedDataTable.cs
r12764 r15282 107 107 public event EventHandler VisualPropertiesChanged; 108 108 protected virtual void OnVisualPropertiesChanged() { 109 EventHandler handler = VisualPropertiesChanged;109 var handler = VisualPropertiesChanged; 110 110 if (handler != null) handler(this, EventArgs.Empty); 111 111 } … … 115 115 } 116 116 117 protected virtual void RegisterRowsEvents() { 118 rows.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(rows_ItemsAdded); 119 rows.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(rows_ItemsRemoved); 120 rows.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(rows_ItemsReplaced); 121 rows.CollectionReset += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(rows_CollectionReset); 122 } 123 private void rows_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) { 117 private void RegisterRowsEvents() { 118 rows.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(RowsOnItemsAdded); 119 rows.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(RowsOnItemsRemoved); 120 rows.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(RowsOnItemsReplaced); 121 rows.CollectionReset += new CollectionItemsChangedEventHandler<IndexedDataRow<T>>(RowsOnCollectionReset); 122 foreach (var row in Rows) RegisterRowEvents(row); 123 } 124 protected virtual void RowsOnItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) { 124 125 foreach (var row in e.Items) 125 126 this.RegisterRowEvents(row); … … 129 130 this.OnReset(); 130 131 } 131 pr ivate void rows_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) {132 protected virtual void RowsOnItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) { 132 133 foreach (var row in e.Items) 133 134 this.DeregisterRowEvents(row); … … 137 138 this.OnReset(); 138 139 } 139 pr ivate void rows_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) {140 protected virtual void RowsOnItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) { 140 141 foreach (var row in e.OldItems) 141 142 this.DeregisterRowEvents(row); … … 147 148 this.OnReset(); 148 149 } 149 pr ivate void rows_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) {150 protected virtual void RowsOnCollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedDataRow<T>> e) { 150 151 foreach (var row in e.OldItems) 151 152 this.DeregisterRowEvents(row); … … 159 160 } 160 161 161 pr otected virtualvoid RegisterRowEvents(IndexedDataRow<T> row) {162 row.Values.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsAdded);163 row.Values.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsMoved);164 row.Values.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsRemoved);165 row.Values.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsReplaced);166 row.Values.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _CollectionReset);167 } 168 pr otected virtualvoid DeregisterRowEvents(IndexedDataRow<T> row) {169 row.Values.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsAdded);170 row.Values.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsMoved);171 row.Values.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsRemoved);172 row.Values.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _ItemsReplaced);173 row.Values.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(Values _CollectionReset);174 } 175 176 pr ivate void Values_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) {177 this.OnReset(); 178 } 179 pr ivate void Values_ItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) {180 this.OnReset(); 181 } 182 pr ivate void Values_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) {183 this.OnReset(); 184 } 185 pr ivate void Values_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) {186 this.OnReset(); 187 } 188 pr ivate void Values_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) {162 private void RegisterRowEvents(IndexedDataRow<T> row) { 163 row.Values.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsAdded); 164 row.Values.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsMoved); 165 row.Values.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsRemoved); 166 row.Values.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsReplaced); 167 row.Values.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnCollectionReset); 168 } 169 private void DeregisterRowEvents(IndexedDataRow<T> row) { 170 row.Values.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsAdded); 171 row.Values.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsMoved); 172 row.Values.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsRemoved); 173 row.Values.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnItemsReplaced); 174 row.Values.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<Tuple<T, double>>>(ValuesOnCollectionReset); 175 } 176 177 protected virtual void ValuesOnItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) { 178 this.OnReset(); 179 } 180 protected virtual void ValuesOnItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) { 181 this.OnReset(); 182 } 183 protected virtual void ValuesOnItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) { 184 this.OnReset(); 185 } 186 protected virtual void ValuesOnItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) { 187 this.OnReset(); 188 } 189 protected virtual void ValuesOnCollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<Tuple<T, double>>> e) { 189 190 this.OnReset(); 190 191 }
Note: See TracChangeset
for help on using the changeset viewer.