- Timestamp:
- 09/14/08 10:13:32 (16 years ago)
- Location:
- trunk/sources/HeuristicLab.CEDMA.Charting
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.CEDMA.Charting/BubbleChart.cs
r562 r566 52 52 private ResultList results; 53 53 private Dictionary<IPrimitive, Record> primitiveToRecordDictionary; 54 private Dictionary<Record, IPrimitive> recordToPrimitiveDictionary; 54 55 private Random random = new Random(); 55 56 private Group points; … … 59 60 records = new List<Record>(); 60 61 primitiveToRecordDictionary = new Dictionary<IPrimitive, Record>(); 62 recordToPrimitiveDictionary = new Dictionary<Record, IPrimitive>(); 61 63 this.results = results; 64 foreach(Record r in results.Records) { 65 records.Add(r); 66 r.OnSelectionChanged += new EventHandler(Record_OnSelectionChanged); 67 } 62 68 results.OnRecordAdded += new EventHandler<RecordAddedEventArgs>(results_OnRecordAdded); 69 results.Changed += new EventHandler(results_Changed); 70 } 71 72 void results_Changed(object sender, EventArgs e) { 73 Repaint(); 74 EnforceUpdate(); 63 75 } 64 76 … … 76 88 void Record_OnSelectionChanged(object sender, EventArgs e) { 77 89 Record r = (Record)sender; 78 foreach(KeyValuePair<IPrimitive, Record> pair in primitiveToRecordDictionary) { 79 if(pair.Value == r) { 80 IPrimitive primitive = pair.Key; 81 if(r.Selected) { 82 int alpha = primitive.Pen.Color.A; 83 primitive.Pen.Color = Color.FromArgb(alpha, selectionColor); 84 primitive.Brush = primitive.Pen.Brush; 85 primitive.IntoForeground(); 86 } else { 87 int alpha = primitive.Pen.Color.A; 88 primitive.Pen.Color = Color.FromArgb(alpha, defaultColor); 89 primitive.Brush = primitive.Pen.Brush; 90 primitive.IntoBackground(); 91 } 92 primitive.EnforceUpdate(); 93 } 94 } 95 } 96 97 //public void AddDimension(string name) { 98 // dimensions.Add(name); 99 // values.Add(name, new List<double>()); 100 //} 101 //public void RemoveDimension(string name) { 102 // dimensions.Remove(name); 103 // values.Remove(name); 104 //} 105 106 //public void AddDataPoint(string dimension, double value) { 107 // values[dimension].Add(value); 108 //} 90 IPrimitive primitive; 91 recordToPrimitiveDictionary.TryGetValue(r, out primitive); 92 if(primitive != null) { 93 ((FixedSizeCircle)primitive).UpdateEnabled = false; 94 points.UpdateEnabled = false; 95 if(r.Selected) { 96 int alpha = primitive.Pen.Color.A; 97 primitive.Pen.Color = Color.FromArgb(alpha, selectionColor); 98 primitive.Brush = primitive.Pen.Brush; 99 primitive.IntoForeground(); 100 } else { 101 int alpha = primitive.Pen.Color.A; 102 primitive.Pen.Color = Color.FromArgb(alpha, defaultColor); 103 primitive.Brush = primitive.Pen.Brush; 104 primitive.IntoBackground(); 105 } 106 ((FixedSizeCircle)primitive).UpdateEnabled = true; 107 points.UpdateEnabled = true; 108 } 109 } 109 110 110 111 public void SetBubbleSizeDimension(string dimension, bool inverted) { … … 133 134 134 135 private void Repaint() { 136 if(xDimension == null || yDimension == null) return; 135 137 lock(records) { 136 138 double maxSize = 1; … … 144 146 Group.Clear(); 145 147 primitiveToRecordDictionary.Clear(); 148 recordToPrimitiveDictionary.Clear(); 146 149 points = new Group(this); 147 150 Group.Add(new Axis(this, 0, 0, AxisType.Both)); 148 151 UpdateViewSize(0, 0, 5); 149 152 foreach(Record r in records) { 150 double x = r.Get(xDimension) + (random.NextDouble() * 2.0 - 1.0) * xJitterFactor;151 double y = r.Get(yDimension) + (random.NextDouble() * 2.0 - 1.0) * yJitterFactor;153 double x = r.Get(xDimension) + r.Get(Record.X_JITTER) * xJitterFactor; 154 double y = r.Get(yDimension) + r.Get(Record.Y_JITTER) * yJitterFactor; 152 155 int size = CalculateSize(r.Get(sizeDimension), minSize, maxSize); 153 156 … … 157 160 UpdateViewSize(x, y, size); 158 161 int alpha = CalculateAlpha(size); 159 Pen pen = new Pen(Color.FromArgb(alpha, defaultColor));162 Pen pen = new Pen(Color.FromArgb(alpha, r.Selected ? selectionColor: defaultColor)); 160 163 Brush brush = pen.Brush; 161 164 FixedSizeCircle c = new FixedSizeCircle(this, x, y, size, pen, brush); … … 163 166 points.Add(c); 164 167 primitiveToRecordDictionary[c] = r; 168 recordToPrimitiveDictionary[r] = c; 165 169 } 166 170 } … … 223 227 primitiveToRecordDictionary.TryGetValue(p, out r); 224 228 if(r != null) r.ToggleSelected(); 229 results.FireChanged(); 225 230 } 226 231 } else base.MouseClick(point, button); … … 237 242 } else base.MouseDoubleClick(point, button); 238 243 } 244 245 public override void MouseDrag(Point start, Point end, MouseButtons button) { 246 if(button == MouseButtons.Left && Mode == ChartMode.Select) { 247 PointD a = TransformPixelToWorld(start); 248 PointD b = TransformPixelToWorld(end); 249 double minX = Math.Min(a.X, b.X); 250 double minY = Math.Min(a.Y, b.Y); 251 double maxX = Math.Max(a.X, b.X); 252 double maxY = Math.Max(a.Y, b.Y); 253 HeuristicLab.Charting.Rectangle r = new HeuristicLab.Charting.Rectangle(this, minX, minY, maxX, maxY); 254 255 List<IPrimitive> primitives = new List<IPrimitive>(); 256 primitives.AddRange(points.Primitives); 257 258 foreach(FixedSizeCircle p in primitives) { 259 if(r.ContainsPoint(p.Point)) { 260 primitiveToRecordDictionary[p].ToggleSelected(); 261 } 262 } 263 results.FireChanged(); 264 } else { 265 base.MouseDrag(start, end, button); 266 } 267 } 239 268 } 240 269 } -
trunk/sources/HeuristicLab.CEDMA.Charting/BubbleChartControl.Designer.cs
r561 r566 32 32 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 33 33 protected override void Dispose(bool disposing) { 34 if 34 if(disposing && (components != null)) { 35 35 components.Dispose(); 36 36 } … … 45 45 /// </summary> 46 46 private void InitializeComponent() { 47 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BubbleChartControl)); 47 this.components = new System.ComponentModel.Container(); 48 this.pictureBox = new System.Windows.Forms.PictureBox(); 49 this.pictureBoxContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); 50 this.zoomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 51 this.selectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 52 this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); 53 this.toolTip = new System.Windows.Forms.ToolTip(this.components); 48 54 ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); 55 this.pictureBoxContextMenuStrip.SuspendLayout(); 49 56 this.SuspendLayout(); 50 57 // 51 58 // pictureBox 52 59 // 53 this.pictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left))); 54 this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill; 55 this.pictureBox.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox.Image"))); 56 this.pictureBox.Size = new System.Drawing.Size(300, 263); 60 this.pictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 61 | System.Windows.Forms.AnchorStyles.Left) 62 | System.Windows.Forms.AnchorStyles.Right))); 63 this.pictureBox.BackColor = System.Drawing.Color.White; 64 this.pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 65 this.pictureBox.ContextMenuStrip = this.pictureBoxContextMenuStrip; 66 this.pictureBox.Location = new System.Drawing.Point(0, 0); 67 this.pictureBox.Name = "pictureBox"; 68 this.pictureBox.Size = new System.Drawing.Size(266, 236); 69 this.pictureBox.TabIndex = 0; 70 this.pictureBox.TabStop = false; 71 this.pictureBox.VisibleChanged += new System.EventHandler(this.pictureBox_VisibleChanged); 72 this.pictureBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseMove); 73 this.pictureBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDoubleClick); 74 this.pictureBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseClick); 75 this.pictureBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDown); 76 this.pictureBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseUp); 77 this.pictureBox.SizeChanged += new System.EventHandler(this.pictureBox_SizeChanged); 78 // 79 // pictureBoxContextMenuStrip 80 // 81 this.pictureBoxContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 82 this.zoomToolStripMenuItem, 83 this.selectToolStripMenuItem, 84 this.toolStripMenuItem2}); 85 this.pictureBoxContextMenuStrip.Name = "pictureBoxContextMenuStrip"; 86 this.pictureBoxContextMenuStrip.Size = new System.Drawing.Size(104, 54); 87 // 88 // zoomToolStripMenuItem 89 // 90 this.zoomToolStripMenuItem.Name = "zoomToolStripMenuItem"; 91 this.zoomToolStripMenuItem.Size = new System.Drawing.Size(103, 22); 92 this.zoomToolStripMenuItem.Text = "&Zoom"; 93 this.zoomToolStripMenuItem.Click += new System.EventHandler(this.zoomToolStripMenuItem_Click); 94 // 95 // selectToolStripMenuItem 96 // 97 this.selectToolStripMenuItem.Name = "selectToolStripMenuItem"; 98 this.selectToolStripMenuItem.Size = new System.Drawing.Size(103, 22); 99 this.selectToolStripMenuItem.Text = "&Select"; 100 this.selectToolStripMenuItem.Click += new System.EventHandler(this.selectToolStripMenuItem_Click); 101 // 102 // toolStripMenuItem2 103 // 104 this.toolStripMenuItem2.Name = "toolStripMenuItem2"; 105 this.toolStripMenuItem2.Size = new System.Drawing.Size(100, 6); 57 106 // 58 107 // BubbleChartControl … … 60 109 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 61 110 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 111 this.BackColor = System.Drawing.SystemColors.Control; 112 this.Controls.Add(this.pictureBox); 62 113 this.Name = "BubbleChartControl"; 63 this.Size = new System.Drawing.Size(300, 263); 64 this.Controls.SetChildIndex(this.pictureBox, 0); 114 this.Size = new System.Drawing.Size(266, 236); 65 115 ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); 116 this.pictureBoxContextMenuStrip.ResumeLayout(false); 66 117 this.ResumeLayout(false); 67 118 … … 70 121 #endregion 71 122 123 protected System.Windows.Forms.PictureBox pictureBox; 124 protected System.Windows.Forms.ToolTip toolTip; 125 protected System.Windows.Forms.ContextMenuStrip pictureBoxContextMenuStrip; 126 protected System.Windows.Forms.ToolStripMenuItem zoomToolStripMenuItem; 127 protected System.Windows.Forms.ToolStripMenuItem selectToolStripMenuItem; 128 protected System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; 129 72 130 } 73 131 } -
trunk/sources/HeuristicLab.CEDMA.Charting/BubbleChartControl.cs
r561 r566 24 24 using System.ComponentModel; 25 25 using System.Drawing; 26 using System.Drawing.Drawing2D; 26 27 using System.Data; 27 28 using System.Text; … … 30 31 31 32 namespace HeuristicLab.CEDMA.Charting { 32 public partial class BubbleChartControl : ChartControl { 33 public new BubbleChart Chart { 34 get { return (BubbleChart)base.Chart; } 33 public partial class BubbleChartControl : UserControl { 34 private Bitmap bitmap; 35 private bool renderingRequired; 36 private Point buttonDownPoint; 37 private Point mousePosition; 38 private int mouseClickCount; 39 private DateTime lastRendered = DateTime.Now; 40 private BubbleChart myChart; 41 public BubbleChart Chart { 42 get { return myChart; } 35 43 set { 36 if (Chart != null) { 37 Chart.Update -= new EventHandler(Chart_Update); 44 if(myChart != null) myChart.Update -= new EventHandler(myChart_Update); 45 myChart = value; 46 if(myChart != null) { 47 myChart.Update += new EventHandler(myChart_Update); 48 SetMode(Chart.Mode); 38 49 } 39 base.Chart = value; 40 if (Chart != null) { 41 Chart.Update += new EventHandler(Chart_Update); 42 } 50 GenerateImage(); 43 51 } 44 52 } 45 46 void Chart_Update(object sender, EventArgs e) { 47 // do nothing; 53 private bool myScaleOnResize; 54 public bool ScaleOnResize { 55 get { return myScaleOnResize; } 56 set { myScaleOnResize = value; } 48 57 } 49 58 50 59 public BubbleChartControl() { 51 60 InitializeComponent(); 61 myScaleOnResize = true; 62 GenerateImage(); 63 } 64 65 private void myChart_Update(object sender, EventArgs e) { 66 GenerateImage(); 67 } 68 private void pictureBox_SizeChanged(object sender, EventArgs e) { 69 if(ScaleOnResize) { 70 if((pictureBox.Width > 0) && (pictureBox.Height > 0) && (Chart != null)) { 71 PointD point = Chart.TransformPixelToWorld(new Point(pictureBox.Width, Chart.SizeInPixels.Height - pictureBox.Height)); 72 Chart.SetPosition(Chart.LowerLeft, point); 73 } 74 } 75 GenerateImage(); 76 } 77 private void pictureBox_VisibleChanged(object sender, EventArgs e) { 78 if(pictureBox.Visible && renderingRequired) { 79 GenerateImage(); 80 } 81 } 82 83 private void pictureBox_MouseDown(object sender, MouseEventArgs e) { 84 buttonDownPoint = e.Location; 85 mouseClickCount = e.Clicks; 86 } 87 private void pictureBox_MouseUp(object sender, MouseEventArgs e) { 88 if(e.Button == MouseButtons.Left) { 89 Point lowerLeft = new Point(Math.Min(e.X, buttonDownPoint.X), 90 Math.Max(e.Y, buttonDownPoint.Y)); 91 Point upperRight = new Point(Math.Max(e.X, buttonDownPoint.X), 92 Math.Min(e.Y, buttonDownPoint.Y)); 93 if(Chart.Mode == ChartMode.Zoom) { 94 pictureBox.Refresh(); 95 if((lowerLeft.X != upperRight.X) && (lowerLeft.Y != upperRight.Y)) { 96 Chart.ZoomIn(lowerLeft, upperRight); 97 } 98 } else if(Chart.Mode == ChartMode.Select) { 99 if((lowerLeft.X != upperRight.X) && (lowerLeft.Y != upperRight.Y)) { 100 Chart.MouseDrag(lowerLeft, upperRight, e.Button); 101 } 102 } 103 } else if(e.Button == MouseButtons.Middle) { 104 if(Chart.Mode == ChartMode.Zoom) { 105 if(mouseClickCount == 1) Chart.ZoomOut(); 106 else if(mouseClickCount == 2) Chart.Unzoom(); 107 } 108 } 109 } 110 private void pictureBox_MouseMove(object sender, MouseEventArgs e) { 111 toolTip.SetToolTip(pictureBox, Chart.GetToolTipText(e.Location)); 112 Cursor cursor = Chart.GetCursor(e.Location); 113 if(cursor != null) pictureBox.Cursor = cursor; 114 else pictureBox.Cursor = Cursors.Default; 115 116 if(e.Button != MouseButtons.None) { 117 if((Chart.Mode == ChartMode.Zoom || Chart.Mode == ChartMode.Select) && (e.Button == MouseButtons.Left)) { 118 pictureBox.Refresh(); 119 Graphics graphics = pictureBox.CreateGraphics(); 120 Pen pen = new Pen(Color.Gray); 121 pen.DashStyle = DashStyle.Dash; 122 graphics.DrawRectangle(pen, 123 Math.Min(e.X, buttonDownPoint.X), 124 Math.Min(e.Y, buttonDownPoint.Y), 125 Math.Abs(e.X - buttonDownPoint.X), 126 Math.Abs(e.Y - buttonDownPoint.Y)); 127 pen.Dispose(); 128 graphics.Dispose(); 129 } 130 } 131 mousePosition = e.Location; 132 } 133 134 private void zoomToolStripMenuItem_Click(object sender, EventArgs e) { 135 SetMode(ChartMode.Zoom); 136 } 137 private void selectToolStripMenuItem_Click(object sender, EventArgs e) { 138 SetMode(ChartMode.Select); 139 } 140 141 private void GenerateImage() { 142 if(!Visible) { 143 renderingRequired = true; 144 } else { 145 if((pictureBox.Width == 0) || (pictureBox.Height == 0)) { 146 bitmap = null; 147 } else { 148 bitmap = new Bitmap(pictureBox.Width, pictureBox.Height); 149 if(Chart != null) { 150 Graphics graphics = Graphics.FromImage(bitmap); 151 graphics.SetClip(new System.Drawing.Rectangle(0, 0, pictureBox.Width, pictureBox.Height)); 152 Chart.Render(graphics, pictureBox.Width, pictureBox.Height); 153 graphics.Dispose(); 154 } 155 } 156 pictureBox.Image = bitmap; 157 renderingRequired = false; 158 } 159 } 160 161 private void SetMode(ChartMode mode) { 162 zoomToolStripMenuItem.Checked = false; 163 selectToolStripMenuItem.Checked = false; 164 if(mode == ChartMode.Zoom) zoomToolStripMenuItem.Checked = true; 165 else if(mode == ChartMode.Select) selectToolStripMenuItem.Checked = true; 166 Chart.Mode = mode; 167 } 168 169 private void pictureBox_MouseClick(object sender, MouseEventArgs e) { 170 Chart.MouseClick(e.Location, e.Button); 171 } 172 173 private void pictureBox_MouseDoubleClick(object sender, MouseEventArgs e) { 174 Chart.MouseDoubleClick(e.Location, e.Button); 52 175 } 53 176 } -
trunk/sources/HeuristicLab.CEDMA.Charting/BubbleChartControl.resx
r561 r566 118 118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 119 119 </resheader> 120 <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 121 <data name="pictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> 122 <value> 123 iVBORw0KGgoAAAANSUhEUgAAASwAAAEHCAYAAAAUFnuAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 124 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAABXlJREFUeF7t0DEB 125 AAAAwqD1T20JT4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 126 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 127 YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG 128 DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 129 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 130 YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG 131 DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 132 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 133 YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG 134 DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 135 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 136 YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG 137 DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 138 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 139 YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG 140 DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 141 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 142 YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG 143 DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 144 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 145 YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG 146 DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA 147 AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw 148 YMCAAQMGDBi4DAzSEwABKB1lLgAAAABJRU5ErkJggg== 149 </value> 150 </data> 120 <metadata name="pictureBoxContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 121 <value>17, 17</value> 122 </metadata> 151 123 <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 152 124 <value>210, 17</value> -
trunk/sources/HeuristicLab.CEDMA.Charting/HeuristicLab.CEDMA.Charting.csproj
r564 r566 73 73 <DependentUpon>BubbleChartControl.cs</DependentUpon> 74 74 </Compile> 75 <Compile Include="Record.cs" /> 75 76 <Compile Include="HeuristicLabCedmaChartingPlugin.cs" /> 76 77 <Compile Include="Histogram.cs" /> -
trunk/sources/HeuristicLab.CEDMA.Charting/ResultList.cs
r562 r566 33 33 34 34 namespace HeuristicLab.CEDMA.Charting { 35 public class Record {36 private Dictionary<string, double> values = new Dictionary<string, double>();37 public Dictionary<string,double> Values {38 get {39 return values;40 }41 }42 43 private bool selected = false;44 public bool Selected { get { return selected; } }45 46 private string uri;47 public string Uri { get { return uri; } }48 public Record(string uri) {49 this.uri = uri;50 }51 52 public void Set(string name, double value) {53 Values.Add(name, value);54 }55 56 public double Get(string name) {57 if(name==null || !Values.ContainsKey(name)) return double.NaN;58 return Values[name];59 }60 61 public void ToggleSelected() {62 selected = !selected;63 if(OnSelectionChanged != null) OnSelectionChanged(this, new EventArgs());64 }65 66 public event EventHandler OnSelectionChanged;67 }68 35 69 36 public class RecordAddedEventArgs : EventArgs { … … 78 45 public class ResultList : ItemBase { 79 46 private const string cedmaNS = "http://www.heuristiclab.com/cedma/"; 80 81 private const string MAPE_TRAINING = "MAPE (training)";82 private const string MAPE_VALIDATION = "MAPE (validation)";83 private const string MAPE_TEST = "MAPE (test)";84 private const string R2_TRAINING = "R2 (training)";85 private const string R2_VALIDATION = "R2 (validation)";86 private const string R2_TEST = "R2 (test)";87 private const string TARGET_VARIABLE = "Target variable";88 private const string TREE_SIZE = "Tree size";89 private const string TREE_HEIGHT = "Tree height";90 91 47 private readonly Entity targetVariablePredicate = new Entity(cedmaNS + "TargetVariable"); 92 48 private readonly Entity trainingMAPEPredicate = new Entity(cedmaNS + "MeanAbsolutePercentageErrorTraining"); … … 111 67 } 112 68 113 private List<string> variableNames = new List<string>() { TARGET_VARIABLE, TREE_SIZE,TREE_HEIGHT,114 MAPE_TRAINING, MAPE_VALIDATION,MAPE_TEST,115 R 2_TRAINING, R2_VALIDATION,R2_TEST};69 private List<string> variableNames = new List<string>() { Record.TARGET_VARIABLE, Record.TREE_SIZE, Record.TREE_HEIGHT, 70 Record.MAPE_TRAINING, Record.MAPE_VALIDATION, Record.MAPE_TEST, 71 Record.R2_TRAINING, Record.R2_VALIDATION, Record.R2_TEST}; 116 72 public string[] VariableNames { 117 73 get { … … 120 76 } 121 77 78 private Dictionary<Entity, string> predicateToVariableName; 79 122 80 public event EventHandler<RecordAddedEventArgs> OnRecordAdded; 123 81 124 82 private List<Record> records; 125 83 public List<Record> Records { 84 get { 85 List<Record> result = new List<Record>(); 86 lock(records) { 87 result.AddRange(records); 88 } 89 return result; 90 } 91 } 126 92 private void ReloadList() { 127 93 var results = store.Select(new Statement(anyEntity, new Entity(cedmaNS + "instanceOf"), new Literal("class:GpFunctionTree"))) … … 133 99 new Resource[] { anyEntity }))); 134 100 101 Random random = new Random(); 135 102 foreach(Statement[] ss in results) { 136 103 if(ss.Length > 0) { 137 104 Record r = new Record(ss[0].Subject.Uri); 105 r.Set(Record.X_JITTER, random.NextDouble() * 2.0 - 1.0); 106 r.Set(Record.Y_JITTER, random.NextDouble() * 2.0 - 1.0); 138 107 foreach(Statement s in ss) { 139 if(s.Predicate.Equals(targetVariablePredicate)) { 140 r.Set(TARGET_VARIABLE, (double)(int)((Literal)s.Property).Value); 141 } else if(s.Predicate.Equals(treeSizePredicate)) { 142 r.Set(TREE_SIZE, (double)(int)((Literal)s.Property).Value); 143 } else if(s.Predicate.Equals(treeHeightPredicate)) { 144 r.Set(TREE_HEIGHT, (double)(int)((Literal)s.Property).Value); 145 } else if(s.Predicate.Equals(trainingMAPEPredicate)) { 146 r.Set(MAPE_TRAINING, (double)((Literal)s.Property).Value); 147 } else if(s.Predicate.Equals(validationMAPEPredicate)) { 148 r.Set(MAPE_VALIDATION, (double)((Literal)s.Property).Value); 149 } else if(s.Predicate.Equals(testMAPEPredicate)) { 150 r.Set(MAPE_TEST, (double)((Literal)s.Property).Value); 151 } else if(s.Predicate.Equals(trainingR2Predicate)) { 152 r.Set(R2_TRAINING, (double)((Literal)s.Property).Value); 153 } else if(s.Predicate.Equals(validationR2Predicate)) { 154 r.Set(R2_VALIDATION, (double)((Literal)s.Property).Value); 155 } else if(s.Predicate.Equals(testR2Predicate)) { 156 r.Set(R2_TEST, (double)((Literal)s.Property).Value); 108 string varName; 109 predicateToVariableName.TryGetValue(s.Predicate, out varName); 110 if(varName != null) { 111 if(varName == Record.TREE_HEIGHT || varName == Record.TREE_SIZE || varName == Record.TARGET_VARIABLE) { 112 r.Set(varName, (double)(int)((Literal)s.Property).Value); 113 } else { 114 r.Set(varName, (double)((Literal)s.Property).Value); 115 } 157 116 } 158 117 } 159 records.Add(r); 118 lock(records) { 119 records.Add(r); 120 } 160 121 FireRecordAdded(r); 161 122 } 162 123 } 124 FireChanged(); 163 125 } 164 126 … … 170 132 : base() { 171 133 records = new List<Record>(); 134 predicateToVariableName = new Dictionary<Entity, string>(); 135 predicateToVariableName[targetVariablePredicate] = Record.TARGET_VARIABLE; 136 predicateToVariableName[treeSizePredicate] = Record.TREE_SIZE; 137 predicateToVariableName[treeHeightPredicate] = Record.TREE_HEIGHT; 138 predicateToVariableName[trainingMAPEPredicate] = Record.MAPE_TRAINING; 139 predicateToVariableName[validationMAPEPredicate] = Record.MAPE_VALIDATION; 140 predicateToVariableName[testMAPEPredicate] = Record.MAPE_TEST; 141 predicateToVariableName[trainingR2Predicate] = Record.R2_TRAINING; 142 predicateToVariableName[validationR2Predicate] = Record.R2_VALIDATION; 143 predicateToVariableName[testR2Predicate] = Record.R2_TEST; 172 144 } 173 145 -
trunk/sources/HeuristicLab.CEDMA.Charting/ResultListView.cs
r562 r566 22 22 public ResultListView(ResultList results) { 23 23 this.results = results; 24 results.Changed += new EventHandler(results_Changed);25 24 InitializeComponent(); 26 25 xAxisComboBox.Items.AddRange(results.VariableNames); … … 30 29 sizeComboBox.Items.AddRange(results.VariableNames); 31 30 sizeComboBox.SelectedItem = sizeComboBox.Items[0]; 32 InitChart();33 }34 35 private DateTime lastUpdate = DateTime.Now;36 void results_Changed(object sender, EventArgs e) {37 if(DateTime.Now.Subtract(lastUpdate).TotalSeconds < 3) return;38 lastUpdate = DateTime.Now;39 31 InitChart(); 40 32 }
Note: See TracChangeset
for help on using the changeset viewer.