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 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); } }