欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang繪制數(shù)列趨勢(shì)圖的操作步驟

 更新時(shí)間:2024年04月02日 09:45:31   作者:=(^.^)=哈哈哈  
數(shù)列趨勢(shì)圖是用來表示數(shù)列中各項(xiàng)之間的變化趨勢(shì)的圖形,它可以幫助我們觀察和分析數(shù)列的規(guī)律和特點(diǎn),一般來說,數(shù)列趨勢(shì)圖可以分為兩種類型:折線圖和散點(diǎn)圖,本文給大家介紹了Golang繪制數(shù)列趨勢(shì)圖的操作步驟,文中有詳細(xì)的代碼示例,需要的朋友可以參考下

要在Go語言中繪制數(shù)列的趨勢(shì)圖,遵循下面的步驟:

步驟1:安裝繪圖庫(kù)

首先,需要安裝Gonum繪圖庫(kù)。在終端中運(yùn)行以下命令來獲取和安裝庫(kù):

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

確保工作環(huán)境已配置GOPATH,并且$GOPATH/bin已添加到PATH中。

步驟2:準(zhǔn)備數(shù)列數(shù)據(jù)

確保數(shù)列數(shù)據(jù)以某種方式可獲得,例如存儲(chǔ)在文本文件中(每行一個(gè)數(shù)值)。例如,數(shù)據(jù)文件(data.txt)可能看起來是這樣的:

12
23
12
34
23
24

步驟3:編寫Go程序

創(chuàng)建一個(gè)新的Go文件,比如 main.go,編寫以下程序來讀取數(shù)據(jù)和生成趨勢(shì)圖。

package main

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

func main() {
    // 打開并讀取數(shù)據(jù)文件
    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)
    }

    // 創(chuàng)建圖表
    p := plot.New()
    p.Title.Text = "數(shù)列趨勢(shì)圖"
    p.X.Label.Text = "序號(hào)"
    p.Y.Label.Text = "數(shù)值"

    // 添加線條
    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:編譯并運(yùn)行程序

在終端中,編譯Go文件:

go build main.go

運(yùn)行編譯后的程序:

./main

程序?qū)?huì)生成一個(gè)名為 trend.png 的趨勢(shì)圖圖片文件:

補(bǔ)充說明:

  • 如果數(shù)列很大(如13萬行),可能需要調(diào)整程序以適應(yīng)這件量級(jí),可能包括內(nèi)存管理和圖形的分辨率等方面。
  • 在繪圖時(shí),可以自定義圖形的樣式,比如線條寬度、顏色和圖表的尺寸等。
  • 上述代碼示例考慮到了數(shù)據(jù)可能解析出錯(cuò)的情況,并相應(yīng)地處理了錯(cuò)誤。

按照上述步驟,能夠使用Go語言和Gonum繪圖庫(kù)來繪制數(shù)列趨勢(shì)圖了。

拓展

Golang 在圖像中繪制矩形框

從獲取的坐標(biāo)信息,在圖像中繪制矩形框,并添加標(biāo)注信息。

1. 依賴

  • 字體 simsun.ttc
  • 第三方庫(kù) 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 畫圖像矩形, 標(biāo)注, 顏色; 返回保存圖像路徑
// 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. 結(jié)果

到此這篇關(guān)于Golang繪制數(shù)列趨勢(shì)圖的操作步驟的文章就介紹到這了,更多相關(guān)Golang繪制趨勢(shì)圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang中byte和rune用法及新手易錯(cuò)點(diǎn)總結(jié)

    golang中byte和rune用法及新手易錯(cuò)點(diǎn)總結(jié)

    golang內(nèi)置類型有rune類型和byte類型,下面這篇文章主要給大家介紹了關(guān)于golang中byte和rune用法及新手易錯(cuò)點(diǎn)總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Go?Singleflight導(dǎo)致死鎖問題解決分析

    Go?Singleflight導(dǎo)致死鎖問題解決分析

    這篇文章主要為大家介紹了Go?Singleflight導(dǎo)致死鎖問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Go+Lua解決Redis秒殺中庫(kù)存與超賣問題

    Go+Lua解決Redis秒殺中庫(kù)存與超賣問題

    本文主要介紹了Go+Lua解決Redis秒殺中庫(kù)存與超賣問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解Golang開啟http服務(wù)的三種方式

    詳解Golang開啟http服務(wù)的三種方式

    這篇文章主要介紹了詳解Golang開啟http服務(wù)的三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 基于Go語言實(shí)現(xiàn)類似tree命令的小程序

    基于Go語言實(shí)現(xiàn)類似tree命令的小程序

    tree?命令是一個(gè)小型的跨平臺(tái)命令行程序,用于遞歸地以樹狀格式列出或顯示目錄的內(nèi)容。本文將通過Go語言實(shí)現(xiàn)類似tree命令的小程序,需要的可以參考一下
    2022-10-10
  • golang操作連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)mysql事務(wù)示例

    golang操作連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)mysql事務(wù)示例

    這篇文章主要為大家介紹了golang操作連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)mysql事務(wù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Go語言簡(jiǎn)介和環(huán)境配置

    Go語言簡(jiǎn)介和環(huán)境配置

    Go語言保證了既能到達(dá)靜態(tài)編譯語言的安全和性能,又達(dá)到了動(dòng)態(tài)語言開發(fā)速度和易維護(hù)性,有人形容Go語言:Go=?C?+?Python?,?說明Go語言既有C靜態(tài)語言程序的運(yùn)行速度,又能達(dá)到Python動(dòng)態(tài)語言的快速開發(fā),這篇文章主要介紹了Go介紹和環(huán)境配置,需要的朋友可以參考下
    2022-07-07
  • Go 常量基礎(chǔ)概念(聲明更改只讀)

    Go 常量基礎(chǔ)概念(聲明更改只讀)

    這篇文章主要為大家介紹了Go常量基礎(chǔ)概念包括常量的聲明更改只讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Golang?throttled基于GCRA速率限制庫(kù)使用探索

    Golang?throttled基于GCRA速率限制庫(kù)使用探索

    這篇文章主要為大家介紹了Golang?throttled基于GCRA速率限制庫(kù)使用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 深入探索Go語言中的高效數(shù)據(jù)結(jié)構(gòu)堆

    深入探索Go語言中的高效數(shù)據(jù)結(jié)構(gòu)堆

    堆,作為一種基本的數(shù)據(jù)結(jié)構(gòu),以其在優(yōu)先隊(duì)列和排序算法中提供高效解決方案的能力而聞名。在本文中,我們將深入探討堆的內(nèi)部工作原理,包括其特性、實(shí)現(xiàn)細(xì)節(jié)以及在現(xiàn)代編程中的應(yīng)用
    2008-06-06

最新評(píng)論