본문 바로가기
Programming/Go

go-chart 사용해서 그래프 그리기

by 코딩여걸 2022. 9. 26.
728x90

go언어로 그래프를 그려야 해서 그래프를 그리는 라이브러리가 있나 찾아보다가 go-chart 라이브러리를 발견했다.

https://github.com/vicanso/go-charts

 

GitHub - vicanso/go-charts: A charts library for Golang

A charts library for Golang. Contribute to vicanso/go-charts development by creating an account on GitHub.

github.com

 

이제 이걸 사용해서 그래프를 그려보려 했다.

어떻게 만들어야 할지 모르겠어서 youtubu를 찾아보다가 이 동영상을 발견했다.

https://www.youtube.com/watch?v=VQeceaFif4c 

 

동영상을 보면서 따라 해 봤는데 뭔가가 다른 것 같았다.

일단 다 따라서 쳐 보고 새 프로젝트를 만들어서 동영상을 참고하여 다시 만들어봤다!


먼저 코드를 작성하기 전에 go-chart library를 import 해보자!

Terminal에 밑에 코드를 써준다.

> go get -u github.com/vicanso/go-charts
> go get -u github.com/vicanso/go-charts/v2

그러면 이런 식으로 나올 것이다.

 

전체 코드 (main.go)

package main

import (
	"github.com/wcharczuk/go-chart/v2"
	"log"
	"os"
)

func main() {
	xValues := []float64{5.0, 1.0, 2.0, 3.0, 4.0, 5.0}
	yValues := []float64{1.0, 1.0, 2.0, 3.0, 5.0, 8.0}

	graph := chart.Chart{
		Series: []chart.Series{
			chart.ContinuousSeries{
				XValues: xValues,
				YValues: yValues,
			},
		},
	}

	filename := "output.png"
	f, err := os.Create(filename)
	if err != nil {
		log.Printf("Failed to create file: %v: %v", filename, err)
		return
	}

	defer f.Close()

	err = graph.Render(chart.PNG, f)
	if err != nil {
		log.Printf("Unable to render graph: %v", err)
		return
	}
}

🫧 전체 코드 살짝 다른 방법으로 쓰는 법

더보기
package main

import (
	"github.com/wcharczuk/go-chart/v2"
	"log"
	"os"
)

func main() {
	graph := chart.Chart{
		Series: []chart.Series{
			chart.ContinuousSeries{
				XValues: []float64{1.0, 2.0, 3.0, 4.0},
				YValues: []float64{1.0, 2.0, 3.0, 4.0},
			},
		},
	}

	filename := "output.png"
	f, err := os.Create(filename)
	if err != nil {
		log.Printf("Failed to create file: %v: %v", filename, err)
		return
	}

	defer f.Close()

	err = graph.Render(chart.PNG, f)
	if err != nil {
		log.Printf("Unable to render graph: %v", err)
		return
	}
}

 

출력 결과

output.png

전체 코드를 작성 후에 터미널에서 실행을 시키면

> go run main.go

 

이렇게 그래프가 잘 출력되는 것을 볼 수 있다.

output.png


🚨 실습하면서 주의할 점!

코드를 작성하면서 작은 실수로 오류가 났다.

이 부분에서 xValues: xValues, yValues: yValues가 아니라 XValues: xValues, YValues: yValues로 해야 한다.

이런 작은 오타 때문에 힘들게 오류를 찾는 시간을 절약했으면 해서 남긴다~!

 

💎 느낀 점

  • 동영상과 문법상 좀 다른 부분도 있는데 영상을 보고 그대로 따라 하는 것만이 아닌 내 코드 혹은 실행이 잘 되는 코드로 내가 찾아서 출력했다는 것이 뿌듯했다 ㅎㅎ 다른 그래프도 자유롭게 만들 수 있게 많이 연습하고 포스팅할 것이다
728x90

댓글