// Plot implements the Plotter interface, drawing labels. func (l *Labels) Plot(da plot.DrawArea, p *plot.Plot) { trX, trY := p.Transforms(&da) for i, label := range l.Labels { x := trX(l.XYs[i].X) y := trY(l.XYs[i].Y) if !da.Contains(plot.Pt(x, y)) { continue } x += l.XOffset y += l.YOffset da.FillText(l.TextStyle, x, y, l.XAlign, l.YAlign, label) } }
// Plot implements the Plot method of the plot.Plotter interface. func (bs *Bubbles) Plot(da plot.DrawArea, plt *plot.Plot) { trX, trY := plt.Transforms(&da) da.SetColor(bs.Color) for _, d := range bs.XYZs { x := trX(d.X) y := trY(d.Y) if !da.Contains(plot.Point{x, y}) { continue } rad := bs.radius(d.Z) // draw a circle centered at x, y var p vg.Path p.Move(x+rad, y) p.Arc(x, y, rad, 0, 2*math.Pi) p.Close() da.Fill(p) } }
// drawCap draws the cap if it is not clipped. func (e *YErrorBars) drawCap(da *plot.DrawArea, x, y vg.Length) { if !da.Contains(plot.Pt(x, y)) { return } da.StrokeLine2(e.LineStyle, x-e.CapWidth/2, y, x+e.CapWidth/2, y) }
// drawCap draws the cap if it is not clipped. func (e *XErrorBars) drawCap(da *plot.DrawArea, x, y vg.Length) { if !da.Contains(plot.Point{x, y}) { return } da.StrokeLine2(e.LineStyle, x, y-e.CapWidth/2, x, y+e.CapWidth/2) }