1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package main
- import (
- "image/color"
- "log"
- "math"
- "math/rand"
- "gonum.org/v1/plot"
- "gonum.org/v1/plot/plotter"
- "gonum.org/v1/plot/vg"
- "gonum.org/v1/plot/vg/draw"
- )
- func main() {
- rand.Seed(103)
- randsinpts := func(n int, maxt float64) plotter.XYs {
- pts := make(plotter.XYs, n)
- for idx := range pts {
- t := rand.Float64() * maxt
- pts[idx].X = t
- pts[idx].Y = math.Sin(t)
- }
- return pts
- }
- sinn := func(n int) plotter.XYs {
- pts := make(plotter.XYs, n)
- for idx := range pts {
- t := float64(idx) * 0.001
- pts[idx].X = t
- pts[idx].Y = math.Sin(t)
- }
- return pts
- }
- n := 10000
- data := sinn(n)
- p, err := plot.New()
- if err != nil {
- log.Panic(err)
- }
- p.Title.Text = "Sine stuff"
- p.X.Label.Text = "time (s)"
- p.X.Max = 10
- p.X.Min = 0
- p.Y.Label.Text = "w/e"
- p.Y.Max = 1
- p.Y.Min = -1
- p.Add(plotter.NewGrid())
- line, err := plotter.NewLine(data)
- if err != nil {
- log.Panic(err)
- }
- line.Color = color.RGBA{B: 255, A: 255}
- line.Width = vg.Millimeter / 2
- randpts := randsinpts(3, data[len(data)-1].X)
- points, err := plotter.NewScatter(randpts)
- if err != nil {
- log.Panic(err)
- }
- points.Shape = draw.CircleGlyph{}
- points.Color = color.RGBA{R: 255, A: 255}
- p.Add(line, points)
- err = p.Save(10*vg.Centimeter, 5*vg.Centimeter, "plot.png")
- if err != nil {
- log.Panic(err)
- }
- }
|