// Draw the plotinum logo. func Example_logo() *plot.Plot { p, err := plot.New() if err != nil { panic(err) } plotter.DefaultLineStyle.Width = vg.Points(1) plotter.DefaultGlyphStyle.Radius = vg.Points(3) p.Y.Tick.Marker = plot.ConstantTicks([]plot.Tick{ {0, "0"}, {0.25, ""}, {0.5, "0.5"}, {0.75, ""}, {1, "1"}, }) p.X.Tick.Marker = plot.ConstantTicks([]plot.Tick{ {0, "0"}, {0.25, ""}, {0.5, "0.5"}, {0.75, ""}, {1, "1"}, }) pts := plotter.XYs{{0, 0}, {0, 1}, {0.5, 1}, {0.5, 0.6}, {0, 0.6}} line := plotter.NewLine(pts) scatter := plotter.NewScatter(pts) p.Add(line, scatter) pts = plotter.XYs{{1, 0}, {0.75, 0}, {0.75, 0.75}} line = plotter.NewLine(pts) scatter = plotter.NewScatter(pts) p.Add(line, scatter) pts = plotter.XYs{{0.5, 0.5}, {1, 0.5}} line = plotter.NewLine(pts) scatter = plotter.NewScatter(pts) p.Add(line, scatter) return p }
// Example_errBars draws points and error bars. func Example_errBars() *plot.Plot { type errPoints struct { plotter.XYs plotter.YErrors plotter.XErrors } rand.Seed(int64(0)) n := 15 data := errPoints{ plotter.XYs: randomPoints(n), plotter.YErrors: plotter.YErrors(randomError(n)), plotter.XErrors: plotter.XErrors(randomError(n)), } p, err := plot.New() if err != nil { panic(err) } scatter := plotter.NewScatter(data) scatter.Shape = plot.CrossGlyph{} p.Add(scatter, plotter.NewXErrorBars(data), plotter.NewYErrorBars(data)) p.Add(plotter.NewGlyphBoxes()) return p }
// Example_points draws some scatter points, a line, // and a line with points. func Example_points() *plot.Plot { rand.Seed(int64(0)) n := 15 scatterData := randomPoints(n) lineData := randomPoints(n) linePointsData := randomPoints(n) p, err := plot.New() if err != nil { panic(err) } p.Title.Text = "Points Example" p.X.Label.Text = "X" p.Y.Label.Text = "Y" p.Add(plotter.NewGrid()) s := plotter.NewScatter(scatterData) s.GlyphStyle.Color = color.RGBA{R: 255, B: 128, A: 255} s.GlyphStyle.Radius = vg.Points(3) l := plotter.NewLine(lineData) l.LineStyle.Width = vg.Points(1) l.LineStyle.Dashes = []vg.Length{vg.Points(5), vg.Points(5)} l.LineStyle.Color = color.RGBA{B: 255, A: 255} lpLine, lpPoints := plotter.NewLinePoints(linePointsData) lpLine.Color = color.RGBA{G: 255, A: 255} lpPoints.Shape = plot.CircleGlyph{} lpPoints.Color = color.RGBA{R: 255, A: 255} p.Add(s, l, lpLine, lpPoints) p.Legend.Add("scatter", s) p.Legend.Add("line", l) p.Legend.Add("line points", lpLine, lpPoints) return p }
// AddScatters adds Scatter plotters to a plot. // The variadic arguments must be either strings // or plotter.XYers. Each plotter.XYer is added to // the plot using the next color, and glyph shape // via the Color and Shape functions. If a // plotter.XYer is immediately preceeded by // a string then a legend entry is added to the plot // using the string as the name. func AddScatters(plt *plot.Plot, vs ...interface{}) { name := "" var i int for _, v := range vs { switch t := v.(type) { case string: name = t case plotter.XYer: s := plotter.NewScatter(t) s.Color = Color(i) s.Shape = Shape(i) i++ plt.Add(s) if name != "" { plt.Legend.Add(name, s) name = "" } default: panic(fmt.Sprintf("AddScatters handles strings and plotter.XYers, got %T", t)) } } }