Changeset 4739
- Timestamp:
- 11/08/10 03:00:46 (14 years ago)
- Location:
- trunk/sources
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Analysis.Views/3.3/HeatMapView.Designer.cs
r4703 r4739 46 46 private void InitializeComponent() { 47 47 System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); 48 System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); 49 System.Windows.Forms.DataVisualization.Charting.Title title1= new System.Windows.Forms.DataVisualization.Charting.Title(); 48 System.Windows.Forms.DataVisualization.Charting.Title title1 = new System.Windows.Forms.DataVisualization.Charting.Title(); 50 49 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HeatMapView)); 51 50 this.chart = new HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart(); 52 this. ColorsPictureBox = new System.Windows.Forms.PictureBox();53 this. ZeroLabel = new System.Windows.Forms.Label();54 this. OneLabel = new System.Windows.Forms.Label();55 this. GrayscalesPictureBox = new System.Windows.Forms.PictureBox();56 this.grayscale dImagesCheckBox = new System.Windows.Forms.CheckBox();51 this.colorsPictureBox = new System.Windows.Forms.PictureBox(); 52 this.minimumLabel = new System.Windows.Forms.Label(); 53 this.maximumLabel = new System.Windows.Forms.Label(); 54 this.grayscalesPictureBox = new System.Windows.Forms.PictureBox(); 55 this.grayscaleCheckBox = new System.Windows.Forms.CheckBox(); 57 56 ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit(); 58 ((System.ComponentModel.ISupportInitialize)(this. ColorsPictureBox)).BeginInit();59 ((System.ComponentModel.ISupportInitialize)(this. GrayscalesPictureBox)).BeginInit();57 ((System.ComponentModel.ISupportInitialize)(this.colorsPictureBox)).BeginInit(); 58 ((System.ComponentModel.ISupportInitialize)(this.grayscalesPictureBox)).BeginInit(); 60 59 this.SuspendLayout(); 61 60 // … … 69 68 chartArea1.AxisX.IntervalAutoMode = System.Windows.Forms.DataVisualization.Charting.IntervalAutoMode.VariableCount; 70 69 chartArea1.AxisX.LabelAutoFitStyle = ((System.Windows.Forms.DataVisualization.Charting.LabelAutoFitStyles)((System.Windows.Forms.DataVisualization.Charting.LabelAutoFitStyles.IncreaseFont | System.Windows.Forms.DataVisualization.Charting.LabelAutoFitStyles.DecreaseFont))); 71 chartArea1.AxisX.Title = " Solution Index";72 chartArea1.AxisY.Title = " SolutionIndex";70 chartArea1.AxisX.Title = "Column Index"; 71 chartArea1.AxisY.Title = "Row Index"; 73 72 chartArea1.CursorX.IsUserEnabled = true; 74 73 chartArea1.CursorX.IsUserSelectionEnabled = true; … … 77 76 chartArea1.Name = "Default"; 78 77 this.chart.ChartAreas.Add(chartArea1); 79 legend1.Alignment = System.Drawing.StringAlignment.Center;80 legend1.Docking = System.Windows.Forms.DataVisualization.Charting.Docking.Top;81 legend1.Name = "Default";82 this.chart.Legends.Add(legend1);83 78 this.chart.Location = new System.Drawing.Point(0, 0); 84 79 this.chart.Name = "chart"; 85 this.chart.Size = new System.Drawing.Size(40 3, 335);80 this.chart.Size = new System.Drawing.Size(406, 463); 86 81 this.chart.TabIndex = 0; 87 82 this.chart.Text = "chart"; 88 83 title1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 89 84 title1.Name = "Default"; 90 title1.Text = " Solution Similarities";85 title1.Text = "Heat Map"; 91 86 this.chart.Titles.Add(title1); 92 87 // 93 // ColorsPictureBox88 // colorsPictureBox 94 89 // 95 this. ColorsPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)90 this.colorsPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 96 91 | System.Windows.Forms.AnchorStyles.Right))); 97 this. ColorsPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;98 this. ColorsPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("ColorsPictureBox.Image")));99 this. ColorsPictureBox.Location = new System.Drawing.Point(409, 23);100 this. ColorsPictureBox.Name = "ColorsPictureBox";101 this. ColorsPictureBox.Size = new System.Drawing.Size(35, 312);102 this. ColorsPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;103 this. ColorsPictureBox.TabIndex = 11;104 this. ColorsPictureBox.TabStop = false;92 this.colorsPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 93 this.colorsPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("colorsPictureBox.Image"))); 94 this.colorsPictureBox.Location = new System.Drawing.Point(430, 28); 95 this.colorsPictureBox.Name = "colorsPictureBox"; 96 this.colorsPictureBox.Size = new System.Drawing.Size(35, 393); 97 this.colorsPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 98 this.colorsPictureBox.TabIndex = 11; 99 this.colorsPictureBox.TabStop = false; 105 100 // 106 // ZeroLabel101 // minimumLabel 107 102 // 108 this. ZeroLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));109 this. ZeroLabel.AutoSize = true;110 this. ZeroLabel.BackColor = System.Drawing.Color.Transparent;111 this. ZeroLabel.Location = new System.Drawing.Point(416, 342);112 this. ZeroLabel.Name = "ZeroLabel";113 this. ZeroLabel.Size = new System.Drawing.Size(22, 13);114 this. ZeroLabel.TabIndex = 14;115 this. ZeroLabel.Text = "0.0";103 this.minimumLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 104 this.minimumLabel.BackColor = System.Drawing.Color.Transparent; 105 this.minimumLabel.Location = new System.Drawing.Point(412, 424); 106 this.minimumLabel.Name = "minimumLabel"; 107 this.minimumLabel.Size = new System.Drawing.Size(73, 19); 108 this.minimumLabel.TabIndex = 2; 109 this.minimumLabel.Text = "0.0"; 110 this.minimumLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter; 116 111 // 117 // OneLabel112 // maximumLabel 118 113 // 119 this. OneLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));120 this. OneLabel.AutoSize = true;121 this. OneLabel.BackColor = System.Drawing.Color.Transparent;122 this. OneLabel.Location = new System.Drawing.Point(416, 3);123 this. OneLabel.Name = "OneLabel";124 this. OneLabel.Size = new System.Drawing.Size(22, 13);125 this. OneLabel.TabIndex = 13;126 this. OneLabel.Text = "1.0";114 this.maximumLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 115 this.maximumLabel.BackColor = System.Drawing.Color.Transparent; 116 this.maximumLabel.Location = new System.Drawing.Point(412, 0); 117 this.maximumLabel.Name = "maximumLabel"; 118 this.maximumLabel.Size = new System.Drawing.Size(73, 25); 119 this.maximumLabel.TabIndex = 1; 120 this.maximumLabel.Text = "1.0"; 121 this.maximumLabel.TextAlign = System.Drawing.ContentAlignment.BottomCenter; 127 122 // 128 // GrayscalesPictureBox123 // grayscalesPictureBox 129 124 // 130 this. GrayscalesPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)125 this.grayscalesPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 131 126 | System.Windows.Forms.AnchorStyles.Right))); 132 this. GrayscalesPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;133 this. GrayscalesPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("GrayscalesPictureBox.Image")));134 this. GrayscalesPictureBox.Location = new System.Drawing.Point(409, 23);135 this. GrayscalesPictureBox.Name = "GrayscalesPictureBox";136 this. GrayscalesPictureBox.Size = new System.Drawing.Size(35, 312);137 this. GrayscalesPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;138 this. GrayscalesPictureBox.TabIndex = 15;139 this. GrayscalesPictureBox.TabStop = false;140 this. GrayscalesPictureBox.Visible = false;127 this.grayscalesPictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 128 this.grayscalesPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("grayscalesPictureBox.Image"))); 129 this.grayscalesPictureBox.Location = new System.Drawing.Point(430, 28); 130 this.grayscalesPictureBox.Name = "grayscalesPictureBox"; 131 this.grayscalesPictureBox.Size = new System.Drawing.Size(35, 393); 132 this.grayscalesPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 133 this.grayscalesPictureBox.TabIndex = 15; 134 this.grayscalesPictureBox.TabStop = false; 135 this.grayscalesPictureBox.Visible = false; 141 136 // 142 // grayscale dImagesCheckBox137 // grayscaleCheckBox 143 138 // 144 this.grayscale dImagesCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));145 this.grayscale dImagesCheckBox.AutoSize = true;146 this.grayscale dImagesCheckBox.Location = new System.Drawing.Point(0, 338);147 this.grayscale dImagesCheckBox.Name = "grayscaledImagesCheckBox";148 this.grayscale dImagesCheckBox.Size = new System.Drawing.Size(115, 17);149 this.grayscale dImagesCheckBox.TabIndex = 16;150 this.grayscale dImagesCheckBox.Text = "Grayscaled images";151 this.grayscale dImagesCheckBox.UseVisualStyleBackColor = true;152 this.grayscale dImagesCheckBox.CheckedChanged += new System.EventHandler(this.grayscaledImagesCheckBox_CheckedChanged);139 this.grayscaleCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 140 this.grayscaleCheckBox.AutoSize = true; 141 this.grayscaleCheckBox.Location = new System.Drawing.Point(412, 446); 142 this.grayscaleCheckBox.Name = "grayscaleCheckBox"; 143 this.grayscaleCheckBox.Size = new System.Drawing.Size(73, 17); 144 this.grayscaleCheckBox.TabIndex = 3; 145 this.grayscaleCheckBox.Text = "Grayscale"; 146 this.grayscaleCheckBox.UseVisualStyleBackColor = true; 147 this.grayscaleCheckBox.CheckedChanged += new System.EventHandler(this.grayscaledImagesCheckBox_CheckedChanged); 153 148 // 154 // Heat mapView149 // HeatMapView 155 150 // 156 151 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 157 152 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 158 this.Controls.Add(this.grayscale dImagesCheckBox);159 this.Controls.Add(this. ZeroLabel);160 this.Controls.Add(this. OneLabel);161 this.Controls.Add(this. ColorsPictureBox);153 this.Controls.Add(this.grayscaleCheckBox); 154 this.Controls.Add(this.minimumLabel); 155 this.Controls.Add(this.maximumLabel); 156 this.Controls.Add(this.colorsPictureBox); 162 157 this.Controls.Add(this.chart); 163 this.Controls.Add(this. GrayscalesPictureBox);164 this.Name = "Heat mapView";165 this.Size = new System.Drawing.Size(4 44, 358);158 this.Controls.Add(this.grayscalesPictureBox); 159 this.Name = "HeatMapView"; 160 this.Size = new System.Drawing.Size(485, 463); 166 161 ((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit(); 167 ((System.ComponentModel.ISupportInitialize)(this. ColorsPictureBox)).EndInit();168 ((System.ComponentModel.ISupportInitialize)(this. GrayscalesPictureBox)).EndInit();162 ((System.ComponentModel.ISupportInitialize)(this.colorsPictureBox)).EndInit(); 163 ((System.ComponentModel.ISupportInitialize)(this.grayscalesPictureBox)).EndInit(); 169 164 this.ResumeLayout(false); 170 165 this.PerformLayout(); … … 174 169 #endregion 175 170 176 pr ivateHeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart chart;177 pr ivate System.Windows.Forms.PictureBox ColorsPictureBox;178 pr ivate System.Windows.Forms.Label ZeroLabel;179 pr ivate System.Windows.Forms.Label OneLabel;180 pr ivate System.Windows.Forms.PictureBox GrayscalesPictureBox;181 pr ivate System.Windows.Forms.CheckBox grayscaledImagesCheckBox;171 protected HeuristicLab.Visualization.ChartControlsExtensions.EnhancedChart chart; 172 protected System.Windows.Forms.PictureBox colorsPictureBox; 173 protected System.Windows.Forms.Label minimumLabel; 174 protected System.Windows.Forms.Label maximumLabel; 175 protected System.Windows.Forms.PictureBox grayscalesPictureBox; 176 protected System.Windows.Forms.CheckBox grayscaleCheckBox; 182 177 } 183 178 } -
trunk/sources/HeuristicLab.Analysis.Views/3.3/HeatMapView.cs
r4703 r4739 31 31 [Content(typeof(HeatMap), true)] 32 32 public partial class HeatMapView : ItemView { 33 protected static Color[] colors = new Color[256]; 34 protected static Color[] grayscaleColors = new Color[256]; 33 35 34 private static Color[] Colors; 35 private static int ColorsCount = 500; 36 private static Color[] GrayscaleColors = new Color[256]; 37 38 #region InitializeColors 36 #region Initialize Colors 39 37 static HeatMapView() { 40 int stepWidth = (255 * 6) / ColorsCount; 41 Color[] colors = new Color[ColorsCount]; 38 int stepWidth = (256 * 4) / colors.Length; 42 39 int currentValue; 43 40 int currentClass; 44 for (int i = 0; i < ColorsCount; i++) {45 currentValue = (i * stepWidth) % 25 5;46 currentClass = (i * stepWidth) / 25 5;41 for (int i = 0; i < colors.Length; i++) { 42 currentValue = (i * stepWidth) % 256; 43 currentClass = (i * stepWidth) / 256; 47 44 switch (currentClass) { 48 case 0: { colors[i] = Color.FromArgb(255, currentValue, 0); break; } 49 case 1: { colors[i] = Color.FromArgb(255 - currentValue, 255, 0); break; } 50 case 2: { colors[i] = Color.FromArgb(0, 255, currentValue); break; } 51 case 3: { colors[i] = Color.FromArgb(0, 255 - currentValue, 255); break; } 52 case 4: { colors[i] = Color.FromArgb(currentValue, 0, 255); break; } 53 case 5: { colors[i] = Color.FromArgb(255, 0, 255 - currentValue); break; } 45 case 0: { colors[i] = Color.FromArgb(0, currentValue, 255); break; } // blue -> cyan 46 case 1: { colors[i] = Color.FromArgb(0, 255, 255 - currentValue); break; } // cyan -> green 47 case 2: { colors[i] = Color.FromArgb(currentValue, 255, 0); break; } // green -> yellow 48 case 3: { colors[i] = Color.FromArgb(255, 255 - currentValue, 0); break; } // yellow -> red 54 49 } 55 50 } 56 int n = (int)(ColorsCount * 0.7);57 Colors = new Color[n];58 for (int i = 0; i < n; i++)59 Colors[i] = colors[i];60 51 for (int i = 0; i < 256; i++) 61 GrayscaleColors[i] = Color.FromArgb(i, i, i);52 grayscaleColors[i] = Color.FromArgb(255 - i, 255 - i, 255 - i); // white -> black 62 53 } 63 54 #endregion … … 73 64 } 74 65 66 protected override void DeregisterContentEvents() { 67 Content.TitleChanged -= new EventHandler(Content_TitleChanged); 68 Content.MinimumChanged -= new EventHandler(Content_MinimumChanged); 69 Content.MaximumChanged -= new EventHandler(Content_MaximumChanged); 70 base.DeregisterContentEvents(); 71 } 72 protected override void RegisterContentEvents() { 73 base.RegisterContentEvents(); 74 Content.TitleChanged += new EventHandler(Content_TitleChanged); 75 Content.MinimumChanged += new EventHandler(Content_MinimumChanged); 76 Content.MaximumChanged += new EventHandler(Content_MaximumChanged); 77 } 78 75 79 protected override void OnContentChanged() { 76 80 base.OnContentChanged(); 77 81 if (Content == null) { 78 82 chart.Series.Clear(); 83 chart.Titles[0].Text = "Heat Map"; 84 minimumLabel.Text = "0.0"; 85 maximumLabel.Text = "1.0"; 79 86 } else { 80 UpdateChart(); 87 chart.Titles[0].Text = Content.Title; 88 minimumLabel.Text = Content.Minimum.ToString(); 89 maximumLabel.Text = Content.Maximum.ToString(); 90 UpdatePoints(); 81 91 } 82 92 } 83 93 84 private void UpdateChart() { 94 protected override void SetEnabledStateOfControls() { 95 base.SetEnabledStateOfControls(); 96 chart.Enabled = Content != null; 97 grayscaleCheckBox.Enabled = Content != null; 98 } 99 100 protected virtual void UpdatePoints() { 85 101 chart.Series.Clear(); 86 102 Series series = new Series(); … … 89 105 series.YValueType = ChartValueType.Int32; 90 106 series.YAxisType = AxisType.Primary; 91 for (int i = 0; i < Content.Rows; i++) 92 for (int j = 0; j < Content.Columns; j++) 93 series.Points.Add(CreateDataPoint(i, j, Content[i, j])); 107 for (int i = 1; i < Content.Rows + 1; i++) 108 for (int j = 1; j < Content.Columns + 1; j++) 109 series.Points.Add(CreateDataPoint(j, i, Content[i - 1, j - 1])); 110 chart.ChartAreas[0].AxisX.Minimum = 0; 111 chart.ChartAreas[0].AxisX.Maximum = Content.Columns + 1; 94 112 chart.ChartAreas[0].AxisY.Minimum = 0; 95 chart.ChartAreas[0].AxisY.Maximum = Content.Rows ;113 chart.ChartAreas[0].AxisY.Maximum = Content.Rows + 1; 96 114 chart.Series.Add(series); 97 chart.Legends.Clear();98 115 } 99 116 100 private DataPoint CreateDataPoint(int index1, int index2, double value) { 101 bool grayScaleModus = grayscaledImagesCheckBox.Checked; 102 int n = grayScaleModus ? GrayscaleColors.Length : Colors.Length; 103 int colorIndex = (int)((n - 1) * value); 104 if (colorIndex >= n) colorIndex = n - 1; 105 if (colorIndex < 0) colorIndex = 0; 106 // invert so that red is 1, blue 0 / black is 1, white 0 107 colorIndex = n - colorIndex - 1; 108 Color color = grayScaleModus ? GrayscaleColors[colorIndex] : Colors[colorIndex]; 109 117 protected virtual DataPoint CreateDataPoint(int index1, int index2, double value) { 110 118 DataPoint p = new DataPoint(index1, index2); 111 p.Color = color;119 p.Color = GetDataPointColor(value, Content.Minimum, Content.Maximum, grayscaleCheckBox.Checked); 112 120 p.MarkerStyle = MarkerStyle.Square; 113 p.ToolTip = string.Format("Solution {0} vs. solution {1}: {2}", 114 index1, index2, value); 121 //p.MarkerSize = 10; 122 //string nl = Environment.NewLine; 123 //p.ToolTip = string.Format("Row: {0}{3}Column: {1}{3}Value: {2}", index2, index1, value, nl); 115 124 return p; 116 125 } 117 126 118 #region Chart Events119 120 private void grayscaledImagesCheckBox_CheckedChanged(object sender, EventArgs e) {121 GrayscalesPictureBox.Visible = grayscaledImagesCheckBox.Checked;122 ColorsPictureBox.Visible = !grayscaledImagesCheckBox.Checked;123 UpdateChart();127 protected virtual Color GetDataPointColor(double value, double min, double max, bool grayscale) { 128 int count = grayscale ? grayscaleColors.Length : colors.Length; 129 int index = (int)((count - 1) * (value - min) / (max - min)); 130 if (index >= count) index = count - 1; 131 if (index < 0) index = 0; 132 return grayscale ? grayscaleColors[index] : colors[index]; 124 133 } 125 134 135 #region Content Events 136 protected virtual void Content_TitleChanged(object sender, EventArgs e) { 137 if (InvokeRequired) 138 Invoke(new EventHandler(Content_TitleChanged), sender, e); 139 else { 140 chart.Titles[0].Text = Content.Title; 141 } 142 } 143 protected virtual void Content_MinimumChanged(object sender, EventArgs e) { 144 if (InvokeRequired) 145 Invoke(new EventHandler(Content_MinimumChanged), sender, e); 146 else { 147 minimumLabel.Text = Content.Minimum.ToString(); 148 UpdatePoints(); 149 } 150 } 151 protected virtual void Content_MaximumChanged(object sender, EventArgs e) { 152 if (InvokeRequired) 153 Invoke(new EventHandler(Content_MaximumChanged), sender, e); 154 else { 155 maximumLabel.Text = Content.Maximum.ToString(); 156 UpdatePoints(); 157 } 158 } 126 159 #endregion 127 160 161 #region Control Events 162 protected virtual void grayscaledImagesCheckBox_CheckedChanged(object sender, EventArgs e) { 163 grayscalesPictureBox.Visible = grayscaleCheckBox.Checked; 164 colorsPictureBox.Visible = !grayscaleCheckBox.Checked; 165 UpdatePoints(); 166 } 167 #endregion 128 168 } 129 130 169 } -
trunk/sources/HeuristicLab.Analysis.Views/3.3/HeatMapView.resx
r4703 r4739 119 119 </resheader> 120 120 <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 121 <data name=" ColorsPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">121 <data name="colorsPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> 122 122 <value> 123 123 Qk0S0gAAAAAAADYAAAAoAAAAMQAAAGsBAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAA/wAe/wAe … … 1020 1020 </value> 1021 1021 </data> 1022 <data name=" GrayscalesPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">1022 <data name="grayscalesPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> 1023 1023 <value> 1024 1024 Qk0S0gAAAAAAADYAAAAoAAAAMQAAAGsBAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAA//////// -
trunk/sources/HeuristicLab.Analysis/3.3/HeatMap.cs
r4722 r4739 20 20 #endregion 21 21 22 using System .Collections.Generic;22 using System; 23 23 using System.Drawing; 24 24 using HeuristicLab.Common; … … 35 35 } 36 36 37 private string title; 38 public string Title { 39 get { return title; } 40 set { 41 if (!(title.Equals(value) || (value == null) && (title == string.Empty))) { 42 title = value == null ? string.Empty : value; 43 OnTitleChanged(); 44 } 45 } 46 } 47 private double minimum; 48 public double Minimum { 49 get { return minimum; } 50 set { 51 if (minimum != value) { 52 minimum = value; 53 if (minimum >= maximum) Maximum = minimum + 1.0; 54 OnMinimumChanged(); 55 } 56 } 57 } 58 private double maximum; 59 public double Maximum { 60 get { return maximum; } 61 set { 62 if (maximum != value) { 63 maximum = value; 64 if (maximum <= minimum) Minimum = maximum - 1.0; 65 OnMaximumChanged(); 66 } 67 } 68 } 69 70 #region Storable Properties 71 [Storable(Name = "Title")] 72 private string StorableTitle { 73 get { return title; } 74 set { title = value; } 75 } 76 [Storable(Name = "Minimum")] 77 private double StorableMinimum { 78 get { return minimum; } 79 set { minimum = value; } 80 } 81 [Storable(Name = "Maximum")] 82 private double StorableMaximum { 83 get { return maximum; } 84 set { maximum = value; } 85 } 86 #endregion 87 37 88 [StorableConstructor] 38 89 protected HeatMap(bool deserializing) : base(deserializing) { } 39 protected HeatMap(HeatMap original, Cloner cloner) : base(original, cloner) { } 40 public HeatMap() : base() { } 41 public HeatMap(int rows, int columns) : base(rows, columns) { } 42 public HeatMap(int rows, int columns, IEnumerable<string> columnNames) : base(rows, columns, columnNames) { } 43 public HeatMap(int rows, int columns, IEnumerable<string> columnNames, IEnumerable<string> rowNames) : base(rows, columns, columnNames, rowNames) { } 44 public HeatMap(double[,] elements) : base(elements) { } 45 public HeatMap(double[,] elements, IEnumerable<string> columnNames) : base(elements, columnNames) { } 46 public HeatMap(double[,] elements, IEnumerable<string> columnNames, IEnumerable<string> rowNames) : base(elements, columnNames, rowNames) { } 90 protected HeatMap(HeatMap original, Cloner cloner) 91 : base(original, cloner) { 92 this.title = original.title; 93 this.minimum = original.minimum; 94 this.maximum = original.maximum; 95 } 96 public HeatMap() 97 : base() { 98 this.title = "Heat Map"; 99 this.minimum = 0.0; 100 this.maximum = 1.0; 101 } 102 public HeatMap(int rows, int columns) 103 : base(rows, columns) { 104 this.title = "Heat Map"; 105 this.minimum = 0.0; 106 this.maximum = 1.0; 107 } 108 public HeatMap(int rows, int columns, string title) 109 : base(rows, columns) { 110 this.title = title == null ? string.Empty : title; 111 this.minimum = 0.0; 112 this.maximum = 1.0; 113 } 114 public HeatMap(double[,] elements) 115 : base(elements) { 116 this.title = "Heat Map"; 117 this.minimum = 0.0; 118 this.maximum = 1.0; 119 } 120 public HeatMap(double[,] elements, string title) 121 : base(elements) { 122 this.title = title == null ? string.Empty : title; 123 this.minimum = 0.0; 124 this.maximum = 1.0; 125 } 126 public HeatMap(double[,] elements, string title, double minimum, double maximum) 127 : base(elements) { 128 this.title = title == null ? string.Empty : title; 129 if (minimum >= maximum) throw new ArgumentException("Minimum is larger than or equal to maximum"); 130 this.minimum = minimum; 131 this.maximum = maximum; 132 } 47 133 48 134 public override IDeepCloneable Clone(Cloner cloner) { … … 51 137 52 138 public override string ToString() { 53 return ItemName; 139 return Title; 140 } 141 142 public event EventHandler TitleChanged; 143 protected virtual void OnTitleChanged() { 144 var handler = TitleChanged; 145 if (handler != null) handler(this, EventArgs.Empty); 146 } 147 public event EventHandler MinimumChanged; 148 protected virtual void OnMinimumChanged() { 149 var handler = MinimumChanged; 150 if (handler != null) handler(this, EventArgs.Empty); 151 } 152 public event EventHandler MaximumChanged; 153 protected virtual void OnMaximumChanged() { 154 var handler = MaximumChanged; 155 if (handler != null) handler(this, EventArgs.Empty); 54 156 } 55 157 } -
trunk/sources/HeuristicLab.Analysis/3.3/PopulationDiversityAnalyzer.cs
r4722 r4739 87 87 ItemArray<DoubleValue> qualities = QualityParameter.ActualValue; 88 88 bool storeHistory = StoreHistoryParameter.Value.Value; 89 90 // sort solutions by quality 91 T[] sortedSolutions = null;92 if (max)93 sortedSolutions = solutions.Select((x, index) => new { Solution = x, Quality = qualities[index] }).OrderByDescending(x => x.Quality).Select(x => x.Solution).ToArray();94 else95 sortedSolutions = solutions.Select((x, index) => new { Solution = x, Quality = qualities[index] }).OrderBy(x => x.Quality).Select(x => x.Solution).ToArray();96 97 // calculate solution similarities98 double[,] similarities = CalculateSimilarities(sortedSolutions); 99 100 // calculate minimum, average and maximum similarities101 double similarity; 102 int count = sortedSolutions.Length;103 double[] minSimilarities = new double[sortedSolutions.Length];104 double[] avgSimilarities = new double[sortedSolutions.Length];105 double[] maxSimilarities = new double[sortedSolutions.Length];106 double avgSimilarity = 0;107 for (int i = 0; i < count; i++) {108 minSimilarities[i] = 1;109 avgSimilarities[i] = 0;110 maxSimilarities[i] = 0;111 for (int j = 0; j < count; j++) {112 if (i != j) {113 similarity = similarities[i, j];114 avgSimilarity += similarity;115 if (minSimilarities[i] > similarity) minSimilarities[i]= similarity;116 avgSimilarities[i] += similarity;117 if (maxSimilarities[i] < similarity) maxSimilarities[i] = similarity;89 int count = solutions.Length; 90 91 if (count > 1) { 92 // sort solutions by quality 93 T[] sortedSolutions = null; 94 if (max) 95 sortedSolutions = solutions.Select((x, index) => new { Solution = x, Quality = qualities[index] }).OrderByDescending(x => x.Quality).Select(x => x.Solution).ToArray(); 96 else 97 sortedSolutions = solutions.Select((x, index) => new { Solution = x, Quality = qualities[index] }).OrderBy(x => x.Quality).Select(x => x.Solution).ToArray(); 98 99 // calculate solution similarities 100 double[,] similarities = CalculateSimilarities(sortedSolutions); 101 102 // calculate minimum, average and maximum similarities 103 double similarity; 104 double[] minSimilarities = new double[sortedSolutions.Length]; 105 double[] avgSimilarities = new double[sortedSolutions.Length]; 106 double[] maxSimilarities = new double[sortedSolutions.Length]; 107 for (int i = 0; i < count; i++) { 108 minSimilarities[i] = 1; 109 avgSimilarities[i] = 0; 110 maxSimilarities[i] = 0; 111 for (int j = 0; j < count; j++) { 112 if (i != j) { 113 similarity = similarities[i, j]; 114 if (minSimilarities[i] > similarity) minSimilarities[i] = similarity; 115 avgSimilarities[i] += similarity; 116 if (maxSimilarities[i] < similarity) maxSimilarities[i] = similarity; 117 } 118 118 } 119 } 120 avgSimilarities[i] = avgSimilarities[i] / (count - 1); 121 } 122 double avgMinSimilarity = minSimilarities.Average(); 123 double avgAvgSimilarity = avgSimilarities.Average(); 124 double avgMaxSimilarity = maxSimilarities.Average(); 125 avgSimilarity = avgSimilarity / (count * count - count); 126 127 // fetch results collection 128 ResultCollection results; 129 if (!ResultsParameter.ActualValue.ContainsKey("Population Diversity Analysis Results")) { 130 results = new ResultCollection(); 131 ResultsParameter.ActualValue.Add(new Result("Population Diversity Analysis Results", results)); 132 } else { 133 results = (ResultCollection)ResultsParameter.ActualValue["Population Diversity Analysis Results"].Value; 134 } 135 136 // store similarities 137 HeatMap similaritiesHeatMap = new HeatMap(similarities); 138 if (!results.ContainsKey("Solution Similarities")) 139 results.Add(new Result("Solution Similarities", similaritiesHeatMap)); 140 else 141 results["Solution Similarities"].Value = similaritiesHeatMap; 142 143 // store similarities history 144 if (storeHistory) { 145 if (!results.ContainsKey("Solution Similarities History")) { 146 HeatMapHistory history = new HeatMapHistory(); 147 history.Add(similaritiesHeatMap); 148 results.Add(new Result("Solution Similarities History", history)); 119 avgSimilarities[i] = avgSimilarities[i] / (count - 1); 120 } 121 double avgMinSimilarity = minSimilarities.Average(); 122 double avgAvgSimilarity = avgSimilarities.Average(); 123 double avgMaxSimilarity = maxSimilarities.Average(); 124 125 // fetch results collection 126 ResultCollection results; 127 if (!ResultsParameter.ActualValue.ContainsKey("Population Diversity Analysis Results")) { 128 results = new ResultCollection(); 129 ResultsParameter.ActualValue.Add(new Result("Population Diversity Analysis Results", results)); 149 130 } else { 150 ((HeatMapHistory)results["Solution Similarities History"].Value).Add(similaritiesHeatMap); 151 } 152 } 153 154 // store average similarity 155 if (!results.ContainsKey("Average Population Similarity")) 156 results.Add(new Result("Average Population Similarity", new DoubleValue(avgSimilarity))); 157 else 158 ((DoubleValue)results["Average Population Similarity"].Value).Value = avgSimilarity; 159 160 // store average minimum, average and maximum similarity 161 if (!results.ContainsKey("Average Minimum Solution Similarity")) 162 results.Add(new Result("Average Minimum Solution Similarity", new DoubleValue(avgMinSimilarity))); 163 else 164 ((DoubleValue)results["Average Minimum Solution Similarity"].Value).Value = avgMinSimilarity; 165 166 if (!results.ContainsKey("Average Average Solution Similarity")) 167 results.Add(new Result("Average Average Solution Similarity", new DoubleValue(avgAvgSimilarity))); 168 else 169 ((DoubleValue)results["Average Average Solution Similarity"].Value).Value = avgAvgSimilarity; 170 171 if (!results.ContainsKey("Average Maximum Solution Similarity")) 172 results.Add(new Result("Average Maximum Solution Similarity", new DoubleValue(avgMaxSimilarity))); 173 else 174 ((DoubleValue)results["Average Maximum Solution Similarity"].Value).Value = avgMaxSimilarity; 175 176 // store population similarity data table 177 DataTable similarityDataTable; 178 if (!results.ContainsKey("Average Solution Similarity")) { 179 similarityDataTable = new DataTable("Average Solution Similarity"); 180 results.Add(new Result("Average Solution Similarity", similarityDataTable)); 181 DataRowVisualProperties visualProperties = new DataRowVisualProperties(); 182 visualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Line; 183 visualProperties.StartIndexZero = true; 184 similarityDataTable.Rows.Add(new DataRow("Average Population Similarity", null, visualProperties)); 185 similarityDataTable.Rows.Add(new DataRow("Average Minimum Solution Similarity", null, visualProperties)); 186 similarityDataTable.Rows.Add(new DataRow("Average Average Solution Similarity", null, visualProperties)); 187 similarityDataTable.Rows.Add(new DataRow("Average Maximum Solution Similarity", null, visualProperties)); 188 } else { 189 similarityDataTable = (DataTable)results["Average Solution Similarity"].Value; 190 } 191 similarityDataTable.Rows["Average Population Similarity"].Values.Add(avgSimilarity); 192 similarityDataTable.Rows["Average Minimum Solution Similarity"].Values.Add(avgMinSimilarity); 193 similarityDataTable.Rows["Average Average Solution Similarity"].Values.Add(avgAvgSimilarity); 194 similarityDataTable.Rows["Average Maximum Solution Similarity"].Values.Add(avgMaxSimilarity); 195 196 // store maximum similarities 197 DataTable minAvgMaxSimilaritiesDataTable = new DataTable("Minimum/Average/Maximum Solution Similarities"); 198 minAvgMaxSimilaritiesDataTable.Rows.Add(new DataRow("Minimum Solution Similarity")); 199 minAvgMaxSimilaritiesDataTable.Rows["Minimum Solution Similarity"].VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Columns; 200 minAvgMaxSimilaritiesDataTable.Rows["Minimum Solution Similarity"].Values.AddRange(minSimilarities); 201 minAvgMaxSimilaritiesDataTable.Rows.Add(new DataRow("Average Solution Similarity")); 202 minAvgMaxSimilaritiesDataTable.Rows["Average Solution Similarity"].VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Columns; 203 minAvgMaxSimilaritiesDataTable.Rows["Average Solution Similarity"].Values.AddRange(avgSimilarities); 204 minAvgMaxSimilaritiesDataTable.Rows.Add(new DataRow("Maximum Solution Similarity")); 205 minAvgMaxSimilaritiesDataTable.Rows["Maximum Solution Similarity"].VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Columns; 206 minAvgMaxSimilaritiesDataTable.Rows["Maximum Solution Similarity"].Values.AddRange(maxSimilarities); 207 if (!results.ContainsKey("Minimum/Average/Maximum Solution Similarities")) { 208 results.Add(new Result("Minimum/Average/Maximum Solution Similarities", minAvgMaxSimilaritiesDataTable)); 209 } else { 210 results["Minimum/Average/Maximum Solution Similarities"].Value = minAvgMaxSimilaritiesDataTable; 211 } 212 213 // store maximum similarities history 214 if (storeHistory) { 215 if (!results.ContainsKey("Minimum/Average/Maximum Solution Similarities History")) { 216 DataTableHistory history = new DataTableHistory(); 217 history.Add(minAvgMaxSimilaritiesDataTable); 218 results.Add(new Result("Minimum/Average/Maximum Solution Similarities History", history)); 131 results = (ResultCollection)ResultsParameter.ActualValue["Population Diversity Analysis Results"].Value; 132 } 133 134 // store similarities 135 HeatMap similaritiesHeatMap = new HeatMap(similarities, "Solution Similarities", 0.0, 1.0); 136 if (!results.ContainsKey("Solution Similarities")) 137 results.Add(new Result("Solution Similarities", similaritiesHeatMap)); 138 else 139 results["Solution Similarities"].Value = similaritiesHeatMap; 140 141 // store similarities history 142 if (storeHistory) { 143 if (!results.ContainsKey("Solution Similarities History")) { 144 HeatMapHistory history = new HeatMapHistory(); 145 history.Add(similaritiesHeatMap); 146 results.Add(new Result("Solution Similarities History", history)); 147 } else { 148 ((HeatMapHistory)results["Solution Similarities History"].Value).Add(similaritiesHeatMap); 149 } 150 } 151 152 // store average minimum, average and maximum similarity 153 if (!results.ContainsKey("Average Minimum Solution Similarity")) 154 results.Add(new Result("Average Minimum Solution Similarity", new DoubleValue(avgMinSimilarity))); 155 else 156 ((DoubleValue)results["Average Minimum Solution Similarity"].Value).Value = avgMinSimilarity; 157 158 if (!results.ContainsKey("Average Average Solution Similarity")) 159 results.Add(new Result("Average Average Solution Similarity", new DoubleValue(avgAvgSimilarity))); 160 else 161 ((DoubleValue)results["Average Average Solution Similarity"].Value).Value = avgAvgSimilarity; 162 163 if (!results.ContainsKey("Average Maximum Solution Similarity")) 164 results.Add(new Result("Average Maximum Solution Similarity", new DoubleValue(avgMaxSimilarity))); 165 else 166 ((DoubleValue)results["Average Maximum Solution Similarity"].Value).Value = avgMaxSimilarity; 167 168 // store average minimum, average and maximum solution similarity data table 169 DataTable minAvgMaxSimilarityDataTable; 170 if (!results.ContainsKey("Average Minimum/Average/Maximum Solution Similarity")) { 171 minAvgMaxSimilarityDataTable = new DataTable("Average Minimum/Average/Maximum Solution Similarity"); 172 results.Add(new Result("Average Minimum/Average/Maximum Solution Similarity", minAvgMaxSimilarityDataTable)); 173 DataRowVisualProperties visualProperties = new DataRowVisualProperties(); 174 visualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Line; 175 visualProperties.StartIndexZero = true; 176 minAvgMaxSimilarityDataTable.Rows.Add(new DataRow("Average Minimum Solution Similarity", null, visualProperties)); 177 minAvgMaxSimilarityDataTable.Rows.Add(new DataRow("Average Average Solution Similarity", null, visualProperties)); 178 minAvgMaxSimilarityDataTable.Rows.Add(new DataRow("Average Maximum Solution Similarity", null, visualProperties)); 219 179 } else { 220 ((DataTableHistory)results["Minimum/Average/Maximum Solution Similarities History"].Value).Add(minAvgMaxSimilaritiesDataTable); 180 minAvgMaxSimilarityDataTable = (DataTable)results["Average Minimum/Average/Maximum Solution Similarity"].Value; 181 } 182 minAvgMaxSimilarityDataTable.Rows["Average Minimum Solution Similarity"].Values.Add(avgMinSimilarity); 183 minAvgMaxSimilarityDataTable.Rows["Average Average Solution Similarity"].Values.Add(avgAvgSimilarity); 184 minAvgMaxSimilarityDataTable.Rows["Average Maximum Solution Similarity"].Values.Add(avgMaxSimilarity); 185 186 // store minimum, average, maximum similarities data table 187 DataTable minAvgMaxSimilaritiesDataTable = new DataTable("Minimum/Average/Maximum Solution Similarities"); 188 minAvgMaxSimilaritiesDataTable.Rows.Add(new DataRow("Minimum Solution Similarity")); 189 minAvgMaxSimilaritiesDataTable.Rows["Minimum Solution Similarity"].VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Columns; 190 minAvgMaxSimilaritiesDataTable.Rows["Minimum Solution Similarity"].Values.AddRange(minSimilarities); 191 minAvgMaxSimilaritiesDataTable.Rows.Add(new DataRow("Average Solution Similarity")); 192 minAvgMaxSimilaritiesDataTable.Rows["Average Solution Similarity"].VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Columns; 193 minAvgMaxSimilaritiesDataTable.Rows["Average Solution Similarity"].Values.AddRange(avgSimilarities); 194 minAvgMaxSimilaritiesDataTable.Rows.Add(new DataRow("Maximum Solution Similarity")); 195 minAvgMaxSimilaritiesDataTable.Rows["Maximum Solution Similarity"].VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Columns; 196 minAvgMaxSimilaritiesDataTable.Rows["Maximum Solution Similarity"].Values.AddRange(maxSimilarities); 197 if (!results.ContainsKey("Minimum/Average/Maximum Solution Similarities")) { 198 results.Add(new Result("Minimum/Average/Maximum Solution Similarities", minAvgMaxSimilaritiesDataTable)); 199 } else { 200 results["Minimum/Average/Maximum Solution Similarities"].Value = minAvgMaxSimilaritiesDataTable; 201 } 202 203 // store minimum, average, maximum similarities history 204 if (storeHistory) { 205 if (!results.ContainsKey("Minimum/Average/Maximum Solution Similarities History")) { 206 DataTableHistory history = new DataTableHistory(); 207 history.Add(minAvgMaxSimilaritiesDataTable); 208 results.Add(new Result("Minimum/Average/Maximum Solution Similarities History", history)); 209 } else { 210 ((DataTableHistory)results["Minimum/Average/Maximum Solution Similarities History"].Value).Add(minAvgMaxSimilaritiesDataTable); 211 } 221 212 } 222 213 } -
trunk/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/EnhancedChart.Designer.cs
r4654 r4739 78 78 // saveFileDialog 79 79 // 80 this.saveFileDialog.Filter = " \"Bitmap (*.bmp)|*.bmp|JPEG (*.jpg)|*.jpg|EMF (*.emf)|*.emf|PNG (*.png)|*.png|GIF " +80 this.saveFileDialog.Filter = "Bitmap (*.bmp)|*.bmp|JPEG (*.jpg)|*.jpg|EMF (*.emf)|*.emf|PNG (*.png)|*.png|GIF " + 81 81 "(*.gif)|*.gif|TIFF (*.tif)|*.tif\""; 82 82 this.saveFileDialog.FilterIndex = 2;
Note: See TracChangeset
for help on using the changeset viewer.