Gonum Plot Loop Сквозь ломтик

Я пытаюсь добавить несколько графиков, используя цикл, но я не могу понять, как вставить строки. Вот код, над которым я работаю:

func plot_stochastic_processes(processes [][]float64, title string) {
    p, err := plot.New()
    if err != nil {
        panic(err)
    }

    p.Title.Text = title
    p.X.Label.Text = "X"
    p.Y.Label.Text = "Y"

    err = plotutil.AddLinePoints(p,
        "Test", getPoints(processes[1]),
        //Need to figure out how to loop through processes
    )
    if err != nil {
        panic(err)
    }

    // Save the plot to a PNG file.
    if err := p.Save(4*vg.Inch, 4*vg.Inch, "points.png"); err != nil {
        panic(err)
    }
}

Моя функция getPoints выглядит так:

func getPoints(line []float64) plotter.XYs {
    pts := make(plotter.XYs, len(line))
    for j, k := range line {
        pts[j].X = float64(j)
        pts[j].Y = k
    }
    return pts
}

Я получаю сообщение об ошибке при попытке поставить цикл, где находится закомментированный раздел. Я знаю, что это должно быть довольно просто. Возможно, цикл до этого, чтобы получить список строк?

Что-то вроде

for i, process := range processes {
    return "title", getPoints(process),
}

Очевидно, я знаю, что это не правильно, но не знаю, как это сделать.

1 ответ

Решение

Я думаю, что вы хотите сначала извлечь ваши данные в []interface{}, а затем вызвать AddLinePoints. Примерно (я не проверял):

lines := make([]interface{},0)
for i, v := range processes { 
    lines = append(lines, "Title" + strconv.Itoa(i))
    lines = append(lines, getPoints(v))
}
plotutil.AddLinePoints(p, lines...)
Другие вопросы по тегам