func (b *QuartPlot) Plot(da plot.DrawArea, plt *plot.Plot) { trX, trY := plt.Transforms(&da) x := trX(b.Location) if !da.ContainsX(x) { return } x += b.Offset med := plot.Pt(x, trY(b.Median)) q1 := trY(b.Quartile1) q3 := trY(b.Quartile3) aLow := trY(b.AdjLow) aHigh := trY(b.AdjHigh) da.StrokeLine2(b.WhiskerStyle, x, aHigh, x, q3) if da.ContainsY(med.Y) { da.DrawGlyphNoClip(b.MedianStyle, med) } da.StrokeLine2(b.WhiskerStyle, x, aLow, x, q1) ostyle := b.MedianStyle ostyle.Radius = b.MedianStyle.Radius / 2 for _, out := range b.Outside { y := trY(b.Value(out)) if da.ContainsY(y) { da.DrawGlyphNoClip(ostyle, plot.Pt(x, y)) } } }
func (b HorizBoxPlot) Plot(da plot.DrawArea, plt *plot.Plot) { trX, trY := plt.Transforms(&da) y := trY(b.Location) if !da.ContainsY(y) { return } med := trX(b.Median) q1 := trX(b.Quartile1) q3 := trX(b.Quartile3) aLow := trX(b.AdjLow) aHigh := trX(b.AdjHigh) box := da.ClipLinesX([]plot.Point{ {q1, y - b.Width/2}, {q3, y - b.Width/2}, {q3, y + b.Width/2}, {q1, y + b.Width/2}, {q1, y - b.Width/2 - b.BoxStyle.Width/2}, }) da.StrokeLines(b.BoxStyle, box...) medLine := da.ClipLinesX([]plot.Point{ {med, y - b.Width/2}, {med, y + b.Width/2}, }) da.StrokeLines(b.MedianStyle, medLine...) cap := b.CapWidth / 2 whisks := da.ClipLinesX([]plot.Point{{q3, y}, {aHigh, y}}, []plot.Point{{aHigh, y - cap}, {aHigh, y + cap}}, []plot.Point{{q1, y}, {aLow, y}}, []plot.Point{{aLow, y - cap}, {aLow, y + cap}}) da.StrokeLines(b.WhiskerStyle, whisks...) for _, out := range b.Outside { x := trX(b.Value(out)) da.DrawGlyph(b.GlyphStyle, plot.Point{x, y}) } }
func (b HorizQuartPlot) Plot(da plot.DrawArea, plt *plot.Plot) { trX, trY := plt.Transforms(&da) y := trY(b.Location) if !da.ContainsY(y) { return } med := plot.Pt(trX(b.Median), y) q1 := trX(b.Quartile1) q3 := trX(b.Quartile3) aLow := trX(b.AdjLow) aHigh := trX(b.AdjHigh) da.StrokeLine2(b.WhiskerStyle, aHigh, y, q3, y) da.DrawGlyph(b.MedianStyle, med) da.StrokeLine2(b.WhiskerStyle, aLow, y, q1, y) ostyle := b.MedianStyle ostyle.Radius = b.MedianStyle.Radius / 2 for _, out := range b.Outside { x := trX(b.Value(out)) da.DrawGlyph(ostyle, plot.Pt(x, y)) } }