Golang绘制数列趋势图的操作步骤

2024-04-18 0 127
目录
  • 步骤1:安装绘图库
  • 步骤2:准备数列数据
  • 步骤3:编写Go程序
  • 步骤4:编译并运行程序
  • 拓展

要在Go语言中绘制数列的趋势图,遵循下面的步骤:

步骤1:安装绘图库

首先,需要安装Gonum绘图库。在终端中运行以下命令来获取和安装库:

go get -u gonum.org/v1/plot/…

确保工作环境已配置GOPATH,并且$GOPATH/bin已添加到PATH中。

步骤2:准备数列数据

确保数列数据以某种方式可获得,例如存储在文本文件中(每行一个数值)。例如,数据文件(data.txt)可能看起来是这样的:

12
23
12
34
23
24

步骤3:编写Go程序

创建一个新的Go文件,比如 main.go,编写以下程序来读取数据和生成趋势图。

package main

import (
\”bufio\”
\”log\”
\”os\”
\”strconv\”
\”gonum.org/v1/plot\”
\”gonum.org/v1/plot/plotter\”
\”gonum.org/v1/plot/vg\”
)

func main() {
// 打开并读取数据文件
f, err := os.Open(\”data.txt\”)
if err != nil {
log.Fatal(err)
}
defer f.Close()

scanner := bufio.NewScanner(f)
points := make(plotter.XYs, 0)

i := 0.0
for scanner.Scan() {
y, err := strconv.ParseFloat(scanner.Text(), 64)
if err != nil {
log.Fatalf(\”error parsing value: %v\”, err)
}
points = append(points, plotter.XY{X: i, Y: y})
i++
}

if err := scanner.Err(); err != nil {
log.Fatal(err)
}

// 创建图表
p := plot.New()
p.Title.Text = \”数列趋势图\”
p.X.Label.Text = \”序号\”
p.Y.Label.Text = \”数值\”

// 添加线条
line, err := plotter.NewLine(points)
if err != nil {
log.Fatal(err)
}
p.Add(line)

// 保存图表
if err := p.Save(10*vg.Inch, 4*vg.Inch, \”trend.png\”); err != nil {
log.Fatal(err)
}
}

步骤4:编译并运行程序

在终端中,编译Go文件:

go build main.go

运行编译后的程序:

./main

程序将会生成一个名为 trend.png 的趋势图图片文件:

Golang绘制数列趋势图的操作步骤

补充说明:

  • 如果数列很大(如13万行),可能需要调整程序以适应这件量级,可能包括内存管理和图形的分辨率等方面。
  • 在绘图时,可以自定义图形的样式,比如线条宽度、颜色和图表的尺寸等。
  • 上述代码示例考虑到了数据可能解析出错的情况,并相应地处理了错误。

按照上述步骤,能够使用Go语言和Gonum绘图库来绘制数列趋势图了。

拓展

Golang 在图像中绘制矩形框

从获取的坐标信息,在图像中绘制矩形框,并添加标注信息。

1. 依赖

  • 字体 simsun.ttc
  • 第三方库 github.com/fogleman/gg

2. 源码

package main

import (
\”encoding/json\”
\”fmt\”
\”image\”
\”image/color\”
\”image/draw\”
\”log\”
\”math\”
\”reflect\”
\”strings\”

\”github.com/fogleman/gg\”
)

// test_draw_rect_text 画图像矩形, 标注, 颜色; 返回保存图像路径
// ref: https://github.com/fogleman/gg/blob/master/examples/rotated-image.go
func test_draw_rect_text(im_path, font_path, detect_label, save_path string, x, y, w, h float64) {
// Load image
im, err := gg.LoadImage(im_path)
if err != nil {
log.Fatal(err)
}

// 1 method
// iw, ih := im.Bounds().Dx(), im.Bounds().Dy()
// Set Context
// dc := gg.NewContext(iw, ih)

// Draw image
// dc.DrawImage(im, 0, 0)

// 2 method
dc := gg.NewContextForImage(im)

// Set color and line width
dc.SetHexColor(\”#FF0000\”)
dc.SetLineWidth(1)

// Draw rectangle
dc.DrawRoundedRectangle(x, y, w, h, 0)
// Store set
dc.Stroke()

// Set font and draw label
var font_height float64 = 7
if err := dc.LoadFontFace(font_path, font_height); err != nil {
panic(err)
}
rect_center_x := x + w/2
rect_center_y := y + h/2
dc.DrawStringAnchored(detect_label, rect_center_x, rect_center_y, 0.5, 0.5)
dc.Clip()

// Save png image
dc.SavePNG(save_path)
}

func main() {
im_path := \”/home/tianzx/Pictures/lena.jpeg\”
font_path := \”/home/tianzx/ai_model/simsun.ttc\”
detect_label := \”缺角/碎裂\”
save_path := \”/home/tianzx/Pictures/lena_test.png\”
var x, y, w, h float64 = 50, 100, 50, 50
test_draw_rect_text(im_path, font_path, detect_label, save_path, x, y, w, h)
}

3. 结果

Golang绘制数列趋势图的操作步骤

Golang绘制数列趋势图的操作步骤

到此这篇关于Golang绘制数列趋势图的操作步骤的文章就介绍到这了,更多相关Golang绘制趋势图内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • golang实现图像验证码的示例代码
  • 安装GoLang环境和开发工具的图文教程
  • golangtraceview视图详解
  • golang打包成带图标的exe可执行文件

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Golang Golang绘制数列趋势图的操作步骤 https://www.u-9.cn/jiaoben/golang/187326.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务