目录
plot--绘图库
原文地址
https://darjun.github.io/2020/04/12/godailylib/plot/
简介
本文介绍 Go 语言的一个非常强大、好用的绘图库——plot
。plot
内置了很多常用的组件,基本满足日常需求。同时,它也提供了定制化的接口,可以实现我们的个性化需求。plot
主要用于将数据可视化,便于我们观察、比较。
快速使用
先安装:
$ go get gonum.org/v1/plot/
后使用:
package main
import (
"log"
"math/rand"
"gonum.org/v1/plot"
"gonum.org/v1/plot/plotter"
"gonum.org/v1/plot/plotutil"
"gonum.org/v1/plot/vg"
)
func main() {
rand.Seed(int64(0))
p, err := plot.New()
if err != nil {
log.Fatal(err)
}
p.Title.Text = "Get Started"
p.X.Label.Text = "X"
p.Y.Label.Text = "Y"
err = plotutil.AddLinePoints(p,
"First", randomPoints(15),
"Second", randomPoints(15),
"Third", randomPoints(15))
if err != nil {
log.Fatal(err)
}
if err = p.Save(4*vg.Inch, 4*vg.Inch, "points.png"); err != nil {
log.Fatal(err)
}
}
func randomPoints(n int) plotter.XYs {
points := make(plotter.XYs, n)
for i := range points {
if i == 0 {
points[i].X = rand.Float64()
} else {
points[i].X = points[i-1].X + rand.Float64()
}
points[i].Y = points[i].X + 10 * rand.Float64()
}
return points
}
程序运行输出points.png
图片文件:
plot
的使用比较直观。首先,调用plot.New()
创建一个“画布”,画布结构如下:
// Plot is the basic type representing a plot.
type Plot struct {
Title struct {
Text string
Padding vg.Length
draw.TextStyle
}
BackgroundColor color.Color
X, Y Axis
Legend Legend
plotters []Plotter
}
然后,通过直接给画布结构字段赋值,设置图像的属性。例如p.Title.Text = "Get Started
设置图像标题内容;p.X.Label.Text = "X"
,p.Y.Label.Text = "Y"
设置图像的 X 和 Y 轴的标签名。
再然后,使用plotutil
或者其他子包的方法在画布上绘制,上面代码中调用AddLinePoints()
绘制了 3 条折线。
最后保存图像,上面代码中调用p.Save()
方法将图像保存到文件中。