fixed dependencies
This commit is contained in:
85
vendor/gonum.org/v1/plot/plotter/scatter.go
generated
vendored
Normal file
85
vendor/gonum.org/v1/plot/plotter/scatter.go
generated
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
// Copyright ©2015 The Gonum Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package plotter
|
||||
|
||||
import (
|
||||
"gonum.org/v1/plot"
|
||||
"gonum.org/v1/plot/vg"
|
||||
"gonum.org/v1/plot/vg/draw"
|
||||
)
|
||||
|
||||
// Scatter implements the Plotter interface, drawing
|
||||
// a glyph for each of a set of points.
|
||||
type Scatter struct {
|
||||
// XYs is a copy of the points for this scatter.
|
||||
XYs
|
||||
|
||||
// GlyphStyleFunc, if not nil, specifies GlyphStyles
|
||||
// for individual points
|
||||
GlyphStyleFunc func(int) draw.GlyphStyle
|
||||
|
||||
// GlyphStyle is the style of the glyphs drawn
|
||||
// at each point.
|
||||
draw.GlyphStyle
|
||||
}
|
||||
|
||||
// NewScatter returns a Scatter that uses the
|
||||
// default glyph style.
|
||||
func NewScatter(xys XYer) (*Scatter, error) {
|
||||
data, err := CopyXYs(xys)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Scatter{
|
||||
XYs: data,
|
||||
GlyphStyle: DefaultGlyphStyle,
|
||||
}, err
|
||||
}
|
||||
|
||||
// Plot draws the Scatter, implementing the plot.Plotter
|
||||
// interface.
|
||||
func (pts *Scatter) Plot(c draw.Canvas, plt *plot.Plot) {
|
||||
trX, trY := plt.Transforms(&c)
|
||||
glyph := func(i int) draw.GlyphStyle { return pts.GlyphStyle }
|
||||
if pts.GlyphStyleFunc != nil {
|
||||
glyph = pts.GlyphStyleFunc
|
||||
}
|
||||
for i, p := range pts.XYs {
|
||||
c.DrawGlyph(glyph(i), vg.Point{X: trX(p.X), Y: trY(p.Y)})
|
||||
}
|
||||
}
|
||||
|
||||
// DataRange returns the minimum and maximum
|
||||
// x and y values, implementing the plot.DataRanger
|
||||
// interface.
|
||||
func (pts *Scatter) DataRange() (xmin, xmax, ymin, ymax float64) {
|
||||
return XYRange(pts)
|
||||
}
|
||||
|
||||
// GlyphBoxes returns a slice of plot.GlyphBoxes,
|
||||
// implementing the plot.GlyphBoxer interface.
|
||||
func (pts *Scatter) GlyphBoxes(plt *plot.Plot) []plot.GlyphBox {
|
||||
glyph := func(i int) draw.GlyphStyle { return pts.GlyphStyle }
|
||||
if pts.GlyphStyleFunc != nil {
|
||||
glyph = pts.GlyphStyleFunc
|
||||
}
|
||||
bs := make([]plot.GlyphBox, len(pts.XYs))
|
||||
for i, p := range pts.XYs {
|
||||
bs[i].X = plt.X.Norm(p.X)
|
||||
bs[i].Y = plt.Y.Norm(p.Y)
|
||||
r := glyph(i).Radius
|
||||
bs[i].Rectangle = vg.Rectangle{
|
||||
Min: vg.Point{X: -r, Y: -r},
|
||||
Max: vg.Point{X: +r, Y: +r},
|
||||
}
|
||||
}
|
||||
return bs
|
||||
}
|
||||
|
||||
// Thumbnail the thumbnail for the Scatter,
|
||||
// implementing the plot.Thumbnailer interface.
|
||||
func (pts *Scatter) Thumbnail(c *draw.Canvas) {
|
||||
c.DrawGlyph(pts.GlyphStyle, c.Center())
|
||||
}
|
||||
Reference in New Issue
Block a user