...
1
2
3
4
5 package plotter_test
6
7 import (
8 "image/color"
9 "log"
10
11 "golang.org/x/exp/rand"
12
13 "gonum.org/v1/plot"
14 "gonum.org/v1/plot/plotter"
15 "gonum.org/v1/plot/vg"
16 "gonum.org/v1/plot/vg/draw"
17 )
18
19
20
21 func ExampleScatter() {
22 rnd := rand.New(rand.NewSource(1))
23
24
25
26 randomPoints := func(n int) plotter.XYs {
27 pts := make(plotter.XYs, n)
28 for i := range pts {
29 if i == 0 {
30 pts[i].X = rnd.Float64()
31 } else {
32 pts[i].X = pts[i-1].X + rnd.Float64()
33 }
34 pts[i].Y = pts[i].X + 10*rnd.Float64()
35 }
36 return pts
37 }
38
39 n := 15
40 scatterData := randomPoints(n)
41 lineData := randomPoints(n)
42 linePointsData := randomPoints(n)
43
44 p := plot.New()
45 p.Title.Text = "Points Example"
46 p.X.Label.Text = "X"
47 p.Y.Label.Text = "Y"
48 p.Add(plotter.NewGrid())
49
50 s, err := plotter.NewScatter(scatterData)
51 if err != nil {
52 log.Panic(err)
53 }
54 s.GlyphStyle.Color = color.RGBA{R: 255, B: 128, A: 255}
55 s.GlyphStyle.Radius = vg.Points(3)
56
57 l, err := plotter.NewLine(lineData)
58 if err != nil {
59 log.Panic(err)
60 }
61 l.LineStyle.Width = vg.Points(1)
62 l.LineStyle.Dashes = []vg.Length{vg.Points(5), vg.Points(5)}
63 l.LineStyle.Color = color.RGBA{B: 255, A: 255}
64
65 lpLine, lpPoints, err := plotter.NewLinePoints(linePointsData)
66 if err != nil {
67 log.Panic(err)
68 }
69 lpLine.Color = color.RGBA{G: 255, A: 255}
70 lpPoints.Shape = draw.CircleGlyph{}
71 lpPoints.Color = color.RGBA{R: 255, A: 255}
72
73 p.Add(s, l, lpLine, lpPoints)
74 p.Legend.Add("scatter", s)
75 p.Legend.Add("line", l)
76 p.Legend.Add("line points", lpLine, lpPoints)
77
78 err = p.Save(200, 200, "testdata/scatter.png")
79 if err != nil {
80 log.Panic(err)
81 }
82 }
83
View as plain text