Golang으로 차트 그리기

11634 단어 Gogonum

입문


고랑으로 도표를 그릴 때 걸려 넘어져서 비망록으로 남겼어요.
보아하니 gonum plot 편할 것 같다.
하지만 구 기사라면 go get 위치를 참조한 것 같다 google code.
현재 github 로 이동하여 다음 작업을 수행합니다.
go get gonum.org/v1/plot/...

두 데이터 그룹

(8.0, 2.0)(3.0, 6.0)를 축으로 각각 100개의class1,class2를 생성하고 고스 분포에 따라 학습 데이터plot를 생성한다.
다음은 코드입니다. 그림의 생성부터 plot까지 주석문을 참조하십시오.
package main

import (
    "image/color"![plot.png](https://qiita-image-store.s3.amazonaws.com/0/123283/3a191005-7612-21c4-88ef-aa6b3f3c5e29.png)

    "math/rand"
    "time"

    "gonum.org/v1/plot"
    "gonum.org/v1/plot/plotter"
    "gonum.org/v1/plot/vg"
)

func main() {

    // 図の生成
    p, err := plot.New()
    if err != nil {
        panic(err)
    }
    //label
    p.Title.Text = "Points Example"
    p.X.Label.Text = "X"
    p.Y.Label.Text = "Y"

    // 補助線
    p.Add(plotter.NewGrid())

    //クラス1
    x1, y1 := 8.0, 2.0

    //クラス2
    x2, y2 := 3.0, 6.0

    //各クラスのサンプル
    n := 200

    // 散布図の作成
    plot1, err := plotter.NewScatter(randomPoints(n, x1, y1))
    if err != nil {
        panic(err)
    }

    plot2, err := plotter.NewScatter(randomPoints(n, x2, y2))
    if err != nil {
        panic(err)
    }

    //色を指定する.
    plot1.GlyphStyle.Color = color.RGBA{R: 255, B: 128, A: 55}
    plot2.GlyphStyle.Color = color.RGBA{R: 155, B: 128, A: 255}

    //plot1,plot2をplot
    p.Add(plot1)
    p.Add(plot2)

    //label
    p.Legend.Add("class1", plot1)
    p.Legend.Add("class2", plot2)

    // 座標範囲
    p.X.Min = 0
    p.X.Max = 10
    p.Y.Min = 0
    p.Y.Max = 10

    // plot.pngに保存
    if err := p.Save(6*vg.Inch, 6*vg.Inch, "plot.png"); err != nil {
        panic(err)
    }

}

//ガウス分布
func random(axis float64) float64 {
    //分散
    dispersion := 1.0
    rand.Seed(time.Now().UnixNano())
    return rand.NormFloat64()*dispersion + axis
}

//学習データの生成
func randomPoints(n int, x, y float64) plotter.XYs {
    pts := make(plotter.XYs, n)
    for i := range pts {
        pts[i].X = random(x)
        pts[i].Y = random(y)
    }
    return pts
}

결과



실제로plot를 진행할 수 있다.

참고 문헌


Go에서 차트를 수정하는 패키지를 시도했습니다.
gonum

좋은 웹페이지 즐겨찾기