1. 前言
数据可视化在数据分析与呈现中非常重要,对于数据从数值向图形的转化,可以让用户更直观、更有效地了解数据所代表的含义。而利用函数实现数据可视化,则可以更加方便和高效的完成数据分析任务。
2. 准备工作
2.1 安装Go语言
安装Go语言需要先从官网下载安装包:
https://golang.org/dl/
然后根据自己的操作系统,在终端中运行命令:
sudo tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz
其中$VERSION是Go语言的版本号,$OS是操作系统,$ARCH是CPU架构。
2.2 安装绘图库
安装go-chart库用于生成图表,运行命令:
go get -u github.com/wcharczuk/go-chart
3. 基本操作
3.1 绘制简单曲线图
下面的代码展示了如何使用go-chart绘制一条曲线:
import (
"github.com/wcharczuk/go-chart"
"github.com/wcharczuk/go-chart/drawing"
"os"
)
func main() {
// 准备数据
xs := []float64{1.0, 2.0, 3.0, 4.0}
ys := []float64{1.0, 4.0, 9.0, 16.0}
// 定义图表
graph := chart.Chart{
XAxis: chart.XAxis{
Name: "X",
NameStyle: chart.StyleShow(),
},
YAxis: chart.YAxis{
Name: "Y",
NameStyle: chart.StyleShow(),
},
Series: []chart.Series{
chart.ContinuousSeries{
XValues: xs,
YValues: ys,
},
},
}
// 保存图表
file, _ := os.Create("chart.png")
defer file.Close()
graph.Render(chart.PNG, file)
}
上面的代码中,首先定义了两个数组:xs和ys,它们分别存放了曲线上的横坐标和纵坐标的数据。然后定义了一个图表graph,其中XAxis和YAxis分别是图表的横轴和纵轴,Series则是图表上的数据系列。
最后使用Render函数将图表保存成图片,保存路径为chart.png。
3.2 绘制多元曲线图
可以通过添加多个Series来实现多元曲线的绘制,如下代码所示:
func main() {
// 准备数据
xs := []float64{1.0, 2.0, 3.0, 4.0}
ys1 := []float64{1.0, 4.0, 9.0, 16.0}
ys2 := []float64{2.0, 8.0, 18.0, 32.0}
// 定义图表
graph := chart.Chart{
XAxis: chart.XAxis{
Name: "X",
NameStyle: chart.StyleShow(),
},
YAxis: chart.YAxis{
Name: "Y",
NameStyle: chart.StyleShow(),
},
Series: []chart.Series{
chart.ContinuousSeries{
XValues: xs,
YValues: ys1,
LineStyle: chart.Style{
StrokeColor: drawing.ColorRed,
StrokeWidth: 2.0,
},
},
chart.ContinuousSeries{
XValues: xs,
YValues: ys2,
LineStyle: chart.Style{
StrokeColor: drawing.ColorGreen,
StrokeWidth: 2.0,
},
},
},
}
// 保存图表
file, _ := os.Create("chart.png")
defer file.Close()
graph.Render(chart.PNG, file)
}
相对于第一个例子,新增了ys2数组,并且定义了两个Series:分别绘制ys1和ys2数据系列。此外,通过LineStyle设置了数据系列的颜色和线条粗细。
3.3 绘制柱状图
绘制柱状图需要使用chart.BarChart类型的数据系列,如下代码所示:
func main() {
// 准备数据
xs := []float64{1, 2, 3, 4}
ys := []float64{6, 4, 2, 7}
// 定义图表
graph := chart.Chart{
XAxis: chart.XAxis{
Name: "X",
Style: chart.Style{
Show: true,
},
},
YAxis: chart.YAxis{
Name: "Y",
Style: chart.Style{
Show: true,
},
},
Series: []chart.Series{
chart.BarChart{
XValues: xs,
YValues: ys,
},
},
}
// 保存图表
file, _ := os.Create("chart.png")
defer file.Close()
graph.Render(chart.PNG, file)
}
注意,柱状图仅需定义一个BarChart类型的数据系列,其中XValues是柱状图的横坐标,YValues是柱状图的高度。
3.4 绘制饼图
绘制饼图需要使用chart.PieChart类型的数据系列,如下代码所示:
func main() {
// 准备数据
xs := []string{"A", "B", "C", "D"}
ys := []float64{12, 13, 15, 26}
// 定义图表
graph := chart.Chart{
Background: chart.Style{
Padding: chart.Box{
Top: 40,
},
},
Series: []chart.Series{
chart.PieChart{
Values: ys,
Labels: xs,
},
},
}
// 保存图表
file, _ := os.Create("chart.png")
defer file.Close()
graph.Render(chart.PNG, file)
}
在饼图中,XValues用于存放数据项的标签,YValues用于存放数据项对应的数值。
4. 总结
本文介绍了使用Go语言函数实现简单的数据可视化图谱展示的方法,通过调用第三方库go-chart来绘制曲线图、柱状图、饼图等。除了本文介绍的几种常见图表类型,go-chart库还支持绘制面积图、散点图、箱形图、热力图等更加丰富的数据可视化图表。这些图表的使用方法与本文介绍的基本操作相似,读者可以根据自己的需求进行调整。