// DrawGlyph implements the GlyphDrawer interface. func (CircleGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt Point) { var p vg.Path p.Move(pt.X+sty.Radius, pt.Y) p.Arc(pt.X, pt.Y, sty.Radius, 0, 2*math.Pi) p.Close() c.Fill(p) }
// DrawGlyph implements the Glyph interface. func (RingGlyph) DrawGlyph(c *Canvas, sty GlyphStyle, pt Point) { c.SetLineStyle(LineStyle{Color: sty.Color, Width: vg.Points(0.5)}) var p vg.Path p.Move(pt.X+sty.Radius, pt.Y) p.Arc(pt.X, pt.Y, sty.Radius, 0, 2*math.Pi) p.Close() c.Stroke(p) }
// Plot implements the Plot method of the plot.Plotter interface. func (bs *Bubbles) Plot(c draw.Canvas, plt *plot.Plot) { trX, trY := plt.Transforms(&c) c.SetColor(bs.Color) for _, d := range bs.XYZs { x := trX(d.X) y := trY(d.Y) if !c.Contains(draw.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() c.Fill(p) } }