Пример #1
0
 public override void Render(GraphSurface surface)
 {
     foreach (var datum in Data)
     {
         surface.DrawGlyph(Brush(datum), Pen(datum), radius(datum),
                           new ScaledValue(XFunc(datum)), new ScaledValue(YFunc(datum)),
                           Glyph(datum));
     }
 }
Пример #2
0
 public override void Render(GraphSurface surface)
 {
     if (!Data.Any())
     {
         return;
     }
     base.Render(surface);
     surface.Polynomial(Equation, Pen(Data.First()));
 }
Пример #3
0
        protected void AddLabel(GraphSurface surface, T datum, ScaledValue midLine)
        {
            var text = label(datum)?.ToString();

            if (!string.IsNullOrWhiteSpace(text))
            {
                surface.XAxis.Gutter.Add(new GutterText(midLine.FinalFraction(surface.XAxis),
                                                        text, angle(datum), size(datum), int.MaxValue - 1));
            }
        }
Пример #4
0
 private void RennderDiscrete(GraphSurface surface, Histogram histo)
 {
     foreach (var bin in histo.Bins)
     {
         var leader = Data.FirstOrDefault(i => bin.Contains(YFunc(i)));
         surface.Rectangle(new ScaledValue(bin.Range.Min) + 1.0, new ScaledValue(0), new ScaledValue(bin.Range.Max) - 1.0,
                           new ScaledValue(bin.Value),
                           Pen(leader), Brush(leader));
     }
 }
Пример #5
0
        public override void Render(GraphSurface surface)
        {
            var pos = 0.1;

            foreach (var datum in Data)
            {
                surface.Rectangle(new ScaledValue(pos), new ScaledValue(0), new ScaledValue(pos + 0.9),
                                  new ScaledValue(YFunc(datum)),
                                  Pen(datum), Brush(datum));
                AddLabel(surface, datum, new ScaledValue(pos + 0.5));
                pos += 1;
            }
        }
Пример #6
0
        public override void Render(GraphSurface surface)
        {
            var histo = ComputeHistogram();

            if (showContinuious)
            {
                RennderContinuious(surface, histo);
            }
            else
            {
                RennderDiscrete(surface, histo);
            }
        }
Пример #7
0
        public override void Render(GraphSurface surface)
        {
            var pos = 0.1;

            surface.XAxis.ScaledValue(0.0); // set the margins right
            foreach (var datum in innerData)
            {
                var midline = new ScaledValue(pos + 0.4);
                AddLabel(surface, datum.c50.Item, midline);
                datum.DrawBox(surface, new ScaledValue(pos), midline, new ScaledValue(0.8 + pos), Pen, Brush, BackgroundBrush);

                pos += 1;
            }
            surface.XAxis.ScaledValue(pos - 0.1); // set the margins right
        }
Пример #8
0
        private void RennderContinuious(GraphSurface surface, Histogram histo)
        {
            IEnumerable <(GraphValue X, GraphValue Y)> Vertices()
            {
                yield return(new ScaledValue(histo.Bins.First().Range.Min), new ScaledValue(0));

                foreach (var bin in histo.Bins)
                {
                    yield return(new ScaledValue((bin.Range.Min + bin.Range.Min) / 2), new ScaledValue(bin.Value));
                }
                yield return(new ScaledValue(histo.Bins.Last().Range.Max), new ScaledValue(0));
            }

            var leader = Data.First();

            surface.Polygon(Vertices(), Pen(leader), Brush(leader));
        }
Пример #9
0
            public void DrawBox(GraphSurface surface, ScaledValue left, ScaledValue midline, ScaledValue right,
                                Func <T, Pen> pen, Func <T, Brush> brush, Func <T, Brush> backgroundBrush)
            {
                surface.Rectangle(left, c75.Position, right, c25.Position, pen(c75.Item), backgroundBrush(c50.Item));
                void InnerLine(SingleBoxValue value, Pen usePen = null) => surface.Line(left, value.Position, right, value.Position,
                                                                                        usePen ?? pen(value.Item));

                InnerLine(min);
                var lightPen = pen(c50.Item);

                InnerLine(c50, new Pen(lightPen.Brush, lightPen.Thickness * 2));
                InnerLine(max);
                surface.Line(midline, c75.Position, midline, max.Position, pen(max.Item));
                surface.Line(midline, min.Position, midline, c25.Position, pen(min.Item));
                var separator = surface.GetGlyphSeparator();

                foreach (var outlier in outliers)
                {
                    separator.DrawGlyph((outlier.Value <highOutlier && outlier.Value> lowOutlier)?null:brush(outlier.Item), pen(outlier.Item), 3, midline, outlier.Position,
                                        Glyphs.Circle);
                }
            }
Пример #10
0
 public override void Render(GraphSurface surface)
 {
     surface.PolyLine(Data.Select(i => (new ScaledValue(XFunc(i)) as GraphValue,
                                        new ScaledValue(YFunc(i)) as GraphValue)), Pen(default(T)));
 }
Пример #11
0
 public override void Render(GraphSurface surface)
 {
 }
Пример #12
0
 public abstract void Render(GraphSurface surface);