...

Source file src/gonum.org/v1/plot/plotter/scatter_example_test.go

Documentation: gonum.org/v1/plot/plotter

     1  // Copyright ©2015 The Gonum Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     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  // ExampleScatter draws some scatter points, a line,
    20  // and a line with points.
    21  func ExampleScatter() {
    22  	rnd := rand.New(rand.NewSource(1))
    23  
    24  	// randomPoints returns some random x, y points
    25  	// with some interesting kind of trend.
    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