...
1
2
3
4
5 package plotter_test
6
7 import (
8 "log"
9
10 "golang.org/x/exp/rand"
11
12 "gonum.org/v1/plot"
13 "gonum.org/v1/plot/plotter"
14 "gonum.org/v1/plot/vg/draw"
15 )
16
17
18 func ExampleErrors() {
19 rnd := rand.New(rand.NewSource(1))
20
21 randomError := func(n int) plotter.Errors {
22 err := make(plotter.Errors, n)
23 for i := range err {
24 err[i].Low = rnd.Float64()
25 err[i].High = rnd.Float64()
26 }
27 return err
28 }
29
30
31 randomPoints := func(n int) plotter.XYs {
32 pts := make(plotter.XYs, n)
33 for i := range pts {
34 if i == 0 {
35 pts[i].X = rnd.Float64()
36 } else {
37 pts[i].X = pts[i-1].X + rnd.Float64()
38 }
39 pts[i].Y = pts[i].X + 10*rnd.Float64()
40 }
41 return pts
42 }
43
44 type errPoints struct {
45 plotter.XYs
46 plotter.YErrors
47 plotter.XErrors
48 }
49
50 n := 15
51 data := errPoints{
52 XYs: randomPoints(n),
53 YErrors: plotter.YErrors(randomError(n)),
54 XErrors: plotter.XErrors(randomError(n)),
55 }
56
57 p := plot.New()
58 scatter, err := plotter.NewScatter(data)
59 if err != nil {
60 log.Panic(err)
61 }
62 scatter.Shape = draw.CrossGlyph{}
63 xerrs, err := plotter.NewXErrorBars(data)
64 if err != nil {
65 log.Panic(err)
66 }
67 yerrs, err := plotter.NewYErrorBars(data)
68 if err != nil {
69 log.Panic(err)
70 }
71 p.Add(scatter, xerrs, yerrs)
72
73 err = p.Save(200, 200, "testdata/errorBars.png")
74 if err != nil {
75 log.Panic(err)
76 }
77 }
78
View as plain text