ssa
59 строк · 1.2 Кб
1package gomathtests
2
3import (
4"fmt"
5"image/color"
6
7"gonum.org/v1/plot"
8"gonum.org/v1/plot/plotter"
9"gonum.org/v1/plot/vg"
10)
11
12// Отрисовка графика с сохранением
13func Plot(FilePathName string, opts ...[]float64) error {
14
15p := plot.New()
16
17p.Title.Text = FilePathName
18
19if len(opts) == 0 {
20return fmt.Errorf("nil plot data")
21}
22
23// Создание точек данных
24X := make([]float64, len(opts[0]))
25for i := range X {
26X[i] = float64(i)
27}
28for _, Y := range opts {
29
30pts := make(plotter.XYs, len(Y))
31for i := range pts {
32pts[i].X = X[i]
33pts[i].Y = Y[i]
34}
35
36// Создание линейного графика
37line, ErrNewLine := plotter.NewLine(pts)
38if ErrNewLine != nil {
39return ErrNewLine
40}
41line.LineStyle.Width = vg.Points(1)
42line.LineStyle.Color = color.RGBA{B: 255, A: 255}
43
44// Добавление графика к графическому контексту
45p.Add(line)
46
47}
48
49// Установка названий осей
50// p.X.Label.Text = "ns"
51// p.Y.Label.Text = "insFrc_AcfNrm, Hz"
52
53// Сохранение графика в файл
54if ErrSave := p.Save(6*vg.Inch, 4*vg.Inch, FilePathName); ErrSave != nil {
55return ErrSave
56}
57
58return nil
59}
60