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)); } }
public override void Render(GraphSurface surface) { if (!Data.Any()) { return; } base.Render(surface); surface.Polynomial(Equation, Pen(Data.First())); }
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)); } }
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)); } }
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; } }
public override void Render(GraphSurface surface) { var histo = ComputeHistogram(); if (showContinuious) { RennderContinuious(surface, histo); } else { RennderDiscrete(surface, histo); } }
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 }
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)); }
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); } }
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))); }
public override void Render(GraphSurface surface) { }
public abstract void Render(GraphSurface surface);