[go] Go 언어로 데이터 시각화를 할 때 타임라인을 표시하는 방법은 무엇인가?
- 선 그래프(Line Graph): 타임라인을 표현하기에 가장 일반적인 방법 중 하나입니다. 각 데이터 포인트의 시간에 따른 값을 선으로 연결하여 그래프를 그립니다. 예를 들어, “github.com/wcharczuk/go-chart”는 Go에서 선 그래프를 그리기 위한 많은 기능을 제공하는 좋은 라이브러리입니다.
import (
"fmt"
"github.com/wcharczuk/go-chart"
"os"
"time"
)
func main() {
points := []chart.EValue{
{XValue: float64(time.Now().Unix()), YValue: 10},
{XValue: float64(time.Now().Add(24*time.Hour).Unix()), YValue: 20},
{XValue: float64(time.Now().Add(48*time.Hour).Unix()), YValue: 15},
}
graph := chart.LineChart{
Series: []chart.Series{
chart.TimeSeries{XValues: getXValues(points), YValues: getYValues(points)},
},
}
f, _ := os.Create("timeline.png")
defer f.Close()
graph.Render(chart.PNG, f)
}
func getXValues(points []chart.EValue) []float64 {
var xValues []float64
for _, point := range points {
xValues = append(xValues, point.XValue)
}
return xValues
}
func getYValues(points []chart.EValue) []float64 {
var yValues []float64
for _, point := range points {
yValues = append(yValues, point.YValue)
}
return yValues
}
- 간트 차트(Gantt Chart): 타임라인을 효과적으로 표현하고 복잡한 작업의 일정을 시각화하기 위해 사용됩니다. “github.com/lucasb-eyer/go-colorful” 및 “github.com/wcharczuk/go-chart” 같은 라이브러리를 사용하면 Go에서 간트 차트를 생성할 수 있습니다.
import (
"fmt"
"github.com/lucasb-eyer/go-colorful"
"github.com/wcharczuk/go-chart"
"os"
"time"
)
func main() {
tasks := []chart.Value{
{Label: "Task 1", Value: float64(48*time.Hour.Seconds()), Style: chart.Style{FillColor: colorful.Hex("#FFC629")}},
{Label: "Task 2", Value: float64(24*time.Hour.Seconds()), Style: chart.Style{FillColor: colorful.Hex("#1F77B4")}},
{Label: "Task 3", Value: float64(72*time.Hour.Seconds()), Style: chart.Style{FillColor: colorful.Hex("#2CA02C")}},
}
graph := chart.BarChart{
Width: 800,
Height: 600,
BarWidth: 40,
Series: []chart.Series{
chart.StaticValuesSeries(tasks),
},
}
f, _ := os.Create("timeline.png")
defer f.Close()
graph.Render(chart.PNG, f)
}
이들은 단순한 예시입니다. Go 언어의 데이터 시각화를 위해 많은 라이브러리들이 있으며, 실제로 사용할 때는 데이터 형식 및 원하는 시각화 타입에 따라 선택할 수 있습니다. 또한, 위의 예시 코드와 함께 주어진 라이브러리 외에도 다른 라이브러리들도 존재하므로 이를 활용하여 원하는 타임라인 시각화를 구현할 수 있습니다.