// NewLabels returns a new Labels using the DefaultFont and // the DefaultFontSize. func NewLabels(d interface { XYer Labeller }) (*Labels, error) { xys, err := CopyXYs(d) if err != nil { return nil, err } if d.Len() != len(xys) { return nil, errors.New("Number of points does not match the number of labels") } strs := make([]string, d.Len()) for i := range strs { strs[i] = d.Label(i) } fnt, err := vg.MakeFont(DefaultFont, DefaultFontSize) if err != nil { return nil, err } return &Labels{ XYs: xys, Labels: strs, TextStyle: plot.TextStyle{Font: fnt}, }, nil }
// New returns a new plot with some reasonable // default settings. func New() (*Plot, error) { titleFont, err := vg.MakeFont(DefaultFont, 12) if err != nil { return nil, err } x, err := makeAxis() if err != nil { return nil, err } y, err := makeAxis() if err != nil { return nil, err } legend, err := makeLegend() if err != nil { return nil, err } p := &Plot{ BackgroundColor: color.White, X: x, Y: y, Legend: legend, } p.Title.TextStyle = TextStyle{ Color: color.Black, Font: titleFont, } return p, nil }
// makeLegend returns a legend with the default // parameter settings. func makeLegend() (Legend, error) { font, err := vg.MakeFont(DefaultFont, vg.Points(12)) if err != nil { return Legend{}, err } return Legend{ ThumbnailWidth: vg.Points(20), TextStyle: TextStyle{Font: font}, }, nil }
// makeAxis returns a default Axis. // // The default range is (∞, ∞), and thus any finite // value is less than Min and greater than Max. func makeAxis() (Axis, error) { labelFont, err := vg.MakeFont(DefaultFont, vg.Points(12)) if err != nil { return Axis{}, err } tickFont, err := vg.MakeFont(DefaultFont, vg.Points(10)) if err != nil { return Axis{}, err } a := Axis{ Min: math.Inf(1), Max: math.Inf(-1), LineStyle: LineStyle{ Color: color.Black, Width: vg.Points(0.5), }, Padding: vg.Points(5), Scale: LinearScale, } a.Label.TextStyle = TextStyle{ Color: color.Black, Font: labelFont, } a.Tick.Label = TextStyle{ Color: color.Black, Font: tickFont, } a.Tick.LineStyle = LineStyle{ Color: color.Black, Width: vg.Points(0.5), } a.Tick.Length = vg.Points(8) a.Tick.Marker = DefaultTicks return a, nil }