42 lines
854 B
Go
42 lines
854 B
Go
package chart
|
|
|
|
// Points are an array of points.
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// Point represents a x,y coordinate.
|
|
type Point struct {
|
|
X float64
|
|
Y float64
|
|
}
|
|
|
|
// Points represents a group of points.
|
|
type Points []Point
|
|
|
|
// String returns a string representation of the points.
|
|
func (p Points) String() string {
|
|
var values []string
|
|
for _, v := range p {
|
|
values = append(values, fmt.Sprintf("%d,%d", int(v.X), int(v.Y)))
|
|
}
|
|
return strings.Join(values, "\n")
|
|
}
|
|
|
|
// Len returns the length of the points set.
|
|
func (p Points) Len() int {
|
|
return len(p)
|
|
}
|
|
|
|
// Swap swaps two elments.
|
|
func (p Points) Swap(i, j int) {
|
|
p[i], p[j] = p[j], p[i]
|
|
}
|
|
|
|
// Less returns if the X value of one element is less than another.
|
|
// This is the default sort for charts where you plot by x values in order.
|
|
func (p Points) Less(i, j int) bool {
|
|
return p[i].X < p[j].X
|
|
}
|