// AddErrorBars adds XErrorBars and YErrorBars // to a plot. The variadic arguments must be // of type plotter.XYer, and must be either a // plotter.XErrorer, plotter.YErrorer, or both. // Each errorer is added to the plot the color from // the Colors function corresponding to its position // in the argument list. func AddErrorBars(plt *plot.Plot, vs ...interface{}) { for i, v := range vs { added := false if xerr, ok := v.(interface { plotter.XYer plotter.XErrorer }); ok { e := plotter.NewXErrorBars(xerr) e.Color = Color(i) plt.Add(e) added = true } if yerr, ok := v.(interface { plotter.XYer plotter.YErrorer }); ok { e := plotter.NewYErrorBars(yerr) e.Color = Color(i) plt.Add(e) added = true } if added { continue } panic(fmt.Sprintf("AddErrorBars expects plotter.XErrorer or plotter.YErrorer, got %T", v)) } }
// 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{ XYs: randomPoints(n), YErrors: plotter.YErrors(randomError(n)), XErrors: plotter.XErrors(randomError(n)), } p, err := plot.New() if err != nil { panic(err) } scatter := must(plotter.NewScatter(data)).(*plotter.Scatter) scatter.Shape = plot.CrossGlyph{} xerrs, err := plotter.NewXErrorBars(data) if err != nil { panic(err) } yerrs, err := plotter.NewYErrorBars(data) if err != nil { panic(err) } p.Add(scatter, xerrs, yerrs) p.Add(plotter.NewGlyphBoxes()) return p }
// AddYErrorBars adds YErrorBars to a plot. // The variadic arguments must be // of type plotter.XYer, and plotter.YErrorer. // Each errorer is added to the plot the color from // the Colors function corresponding to its position // in the argument list. func AddYErrorBars(plt *plot.Plot, es ...interface { plotter.XYer plotter.YErrorer }) { for i, e := range es { bars := plotter.NewYErrorBars(e) bars.Color = Color(i) plt.Add(bars) } }
// AddYErrorBars adds YErrorBars to a plot. // The variadic arguments must be // of type plotter.XYer, and plotter.YErrorer. // Each errorer is added to the plot the color from // the Colors function corresponding to its position // in the argument list. // // If an error occurs then none of the plotters are added // to the plot, and the error is returned. func AddYErrorBars(plt *plot.Plot, es ...interface { plotter.XYer plotter.YErrorer }) error { var ps []plot.Plotter for i, e := range es { bars, err := plotter.NewYErrorBars(e) if err != nil { return err } bars.Color = Color(i) ps = append(ps, bars) } plt.Add(ps...) return nil }
// AddErrorBars adds XErrorBars and YErrorBars // to a plot. The variadic arguments must be // of type plotter.XYer, and must be either a // plotter.XErrorer, plotter.YErrorer, or both. // Each errorer is added to the plot the color from // the Colors function corresponding to its position // in the argument list. // // If an error occurs then none of the plotters are added // to the plot, and the error is returned. func AddErrorBars(plt *plot.Plot, vs ...interface{}) error { var ps []plot.Plotter for i, v := range vs { added := false if xerr, ok := v.(interface { plotter.XYer plotter.XErrorer }); ok { e, err := plotter.NewXErrorBars(xerr) if err != nil { return err } e.Color = Color(i) ps = append(ps, e) added = true } if yerr, ok := v.(interface { plotter.XYer plotter.YErrorer }); ok { e, err := plotter.NewYErrorBars(yerr) if err != nil { return err } e.Color = Color(i) ps = append(ps, e) added = true } if added { continue } panic(fmt.Sprintf("AddErrorBars expects plotter.XErrorer or plotter.YErrorer, got %T", v)) } plt.Add(ps...) return nil }