private void DrawZeroAxises(ScatterPointCollection points) { if (ShowZeroAxises) { var calculator = new ScatterplotCalculator(points); if (calculator.MinX < 0 && calculator.MaxX > 0) { var x1 = CanvasCalculator.GetX(0); var x2 = x1; var y1 = CanvasCalculator.GetY(calculator.MinY); var y2 = CanvasCalculator.GetY(calculator.MaxY); _zeroVerticalLine = new Line() { X1 = x1, X2 = x2, Y1 = y1, Y2 = y2, StrokeThickness = 0.5, StrokeDashArray = new DoubleCollection(new Double[] { 2, 4 }), Stroke = Brushes.Black }; mainCanvas.Children.Add(_zeroVerticalLine); } if (calculator.MinY < 0 && calculator.MaxY > 0) { var x1 = CanvasCalculator.GetX(calculator.MinX); var x2 = CanvasCalculator.GetX(calculator.MaxX); var y1 = CanvasCalculator.GetY(0); var y2 = y1; _zeroHorizontalLine = new Line() { X1 = x1, X2 = x2, Y1 = y1, Y2 = y2, StrokeThickness = 0.5, StrokeDashArray = new DoubleCollection(new Double[] { 2, 4 }), Stroke = Brushes.Black }; mainCanvas.Children.Add(_zeroHorizontalLine); } } else { if (_zeroHorizontalLine != null) { mainCanvas.Children.Remove(_zeroHorizontalLine); } if (_zeroVerticalLine != null) { mainCanvas.Children.Remove(_zeroVerticalLine); } } }
public void Init(ScatterPointCollection points, Outliers outliers, string labelX, string lableY) { Reset(); _lableX = labelX.ToUpperFirstLetter(); _lableY = lableY.ToUpperFirstLetter(); _points = points; _outliers = outliers; }
public void Init(string labelX, string lableY, ScatterPointCollection points) { ResetCanvas(); _lableX = labelX; _lableY = lableY; _points = points; Draw(); }
private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { var f = new ThreeSigmaOutliersFinder(_points.Select(p => p.Y)); var outliersY = f.Find(); f = new ThreeSigmaOutliersFinder(_points.Select(p => p.X)); var outliersX = f.Find(); _points = new ScatterPointCollection(_points.Where(p => outliersY.Contains(p.Y) == false)); _points = new ScatterPointCollection(_points.Where(p => outliersX.Contains(p.X) == false)); ResetCanvas(); Draw(); }
private void DrawPoints(ScatterPointCollection points, bool drawOutliers) { IEnumerable <double> outliersY = new Double[0]; IEnumerable <double> outliersX = new Double[0]; if (drawOutliers) { var f = new ThreeSigmaOutliersFinder(points.Select(p => p.Y)); outliersY = f.Find(); f = new ThreeSigmaOutliersFinder(points.Select(p => p.X)); outliersX = f.Find(); } var calculator = new ScatterplotCalculator(points); foreach (var p in points) { var color = new ColorPicker().Pick(p.Group); var brush = new SolidColorBrush(color); var ellipse = new Ellipse() { Fill = brush, Height = 10, Width = 10 }; if (Math.Abs(p.SubGroup) > 1) { ellipse.Stroke = new SolidColorBrush(new ColorPicker().RevertColor(color)); ellipse.StrokeThickness = 2; } if (outliersY.Contains(p.Y)) { ellipse.Height = 20; ellipse.Width = 20; } if (outliersX.Contains(p.X)) { ellipse.Height = 20; ellipse.Width = 20; } Canvas.SetLeft(ellipse, CanvasCalculator.GetX(p.X) - 5); Canvas.SetTop(ellipse, CanvasCalculator.GetY(p.Y) - 5); ellipse.DataContext = p; mainCanvas.Children.Add(ellipse); } }