Rumah  >  Artikel  >  Bolehkah bahasa Go digunakan untuk visualisasi?

Bolehkah bahasa Go digunakan untuk visualisasi?

小老鼠
小老鼠asal
2023-06-29 14:23:021481semak imbas

Bahasa Go boleh melakukan visualisasi. Dalam bahasa Go, kami boleh menggunakan perpustakaan dan alatan pihak ketiga untuk merealisasikan visualisasi data dengan cepat Sebagai bahasa pengaturcaraan yang cekap dan berprestasi tinggi, bahasa Go boleh membantu kami melaksanakan visualisasi data dengan mudah.

Bolehkah bahasa Go digunakan untuk visualisasi?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi go1.20.1, komputer Dell G3.

Sebelum memperkenalkan penggunaan bahasa Go untuk visualisasi data, kita perlu terlebih dahulu memahami ciri-ciri bahasa Go. Berikut ialah ciri utama bahasa Go.

Prestasi serentak tinggi

Bahasa Go ialah bahasa pengaturcaraan berdasarkan operasi serentak Ia mencapai prestasi serentak tinggi melalui mekanisme seperti Goroutine, Channel dan Mutex. Ini memudahkan untuk menulis program serentak yang cekap.

Perpustakaan standard yang kaya

Bahasa Go menyediakan perpustakaan standard yang sangat kaya, meliputi pengaturcaraan rangkaian, I/O, pemprosesan fail, dsb. Dengan sokongan perpustakaan standard ini, kami boleh membangunkan program dengan mudah.

Bahasa ditaip statik

Bahasa Go ialah bahasa pengaturcaraan ditaip secara statik. Penaipan statik boleh menyemak jenis kod terlebih dahulu dan mengelakkan beberapa ralat jenis.

Sokongan kompilasi silang

Bahasa Go menyokong kompilasi silang, yang membolehkan kami menyusun atur cara dengan mudah ke dalam fail boleh laku untuk platform yang berbeza. Ini membolehkan pembangunan dan penggunaan untuk platform yang berbeza.

Gunakan bahasa Go untuk visualisasi data

Dalam bahasa Go, kami boleh menggunakan perpustakaan dan alatan pihak ketiga untuk mencapai visualisasi data dengan cepat.

Langkah untuk menggunakan bahasa Go untuk visualisasi data

Langkah 1: Pasang perpustakaan dan alatan yang diperlukan

Sebelum kita mula, kita perlu memasang beberapa perpustakaan dan alatan yang diperlukan. Berikut ialah perpustakaan dan alatan yang perlu dipasang:

GoChart: perpustakaan carta dalam bahasa Go. Digunakan untuk menjana carta. Gin: Rangka kerja web untuk bahasa Go. Digunakan untuk membina pelayan web dan mengendalikan permintaan HTTP. Gorm: perpustakaan ORM untuk bahasa Go. Digunakan untuk mengendalikan pangkalan data.

Anda boleh memasang perpustakaan dan alatan ini menggunakan arahan berikut:

go get -u github.com/wcharczuk/go-chart

go get -u github.com/gin-gonic/gin

go get -u github .com/jinzhu/gorm

Langkah 2: Sediakan data

Sebelum melakukan visualisasi data, kita perlu menyediakan data terlebih dahulu. Berikut ialah contoh fail CSV:

日期,收入,支出
2020-01-01,10000,8000
2020-01-02,12000,9000
2020-01-03,11000,10000
2020-01-04,13000,8000
2020-01-05,14000,12000

Kita boleh menggunakan Gorm untuk membaca fail CSV ini ke dalam pangkalan data. Berikut ialah kod untuk contoh:

package main
import (
    "bufio"
    "encoding/csv"
    "io"
    "log"
    "os"
    "time"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/sqlite"
)
type Record struct {
    gorm.Model
    Date   time.Time `gorm:"not null"`
    Income int       `gorm:"not null"`
    Expense int      `gorm:"not null"`
}
func main() {
    db, err := gorm.Open("sqlite3", "test.db")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    db.AutoMigrate(&Record{})
    file, err := os.Open("data.csv")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()
    reader := csv.NewReader(bufio.NewReader(file))
    for {
        line, err := reader.Read()
        if err == io.EOF {
            break
        } else if err != nil {
            log.Fatal(err)
        }
        date, err := time.Parse("2006-01-02", line[0])
        if err != nil {
            log.Fatal(err)
        }
        income, err := strconv.Atoi(line[1])
        if err != nil {
            log.Fatal(err)
        }
        expense, err := strconv.Atoi(line[2])
        if err != nil {
            log.Fatal(err)
        }
        record := Record{
            Date:    date,
            Income:  income,
            Expense: expense,
        }
        db.Create(&record)
    }
}

Langkah 3: Jana carta

Dengan data, kita boleh mula menjana carta. Dalam bahasa Go, kita boleh menggunakan GoChart untuk menjana carta. Berikut ialah contoh kod untuk menjana carta baris:

package main
import (
    "net/http"
    "strconv"
    "github.com/gin-gonic/gin"
    "github.com/wcharczuk/go-chart"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/sqlite"
)
func main() {
    db, err := gorm.Open("sqlite3", "test.db")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        var records []Record
        db.Find(&records)
        var xvalues []time.Time
        var yvalues1 []float64
        var yvalues2 []float64
        for _, record := range records {
            xvalues = append(xvalues, record.Date)
            yvalues1 = append(yvalues1, float64(record.Income))
            yvalues2 = append(yvalues2, float64(record.Expense))
        }
        graph := chart.Chart{
            Title: "收入支出",
            XAxis: chart.XAxis{
                Name: "日期",
                Ticks: []chart.Tick{
                    {Value: chart.TimeToFloat64(xvalues[0]), Label: xvalues[0].Format("2006-01-02")},
                    {Value: chart.TimeToFloat64(xvalues[len(xvalues)-1]), Label: xvalues[len(xvalues)-1].Format("2006-01-02")},
                },
            },
            YAxis: chart.YAxis{
                Name: "金额",
            },
            Series: []chart.Series{
                chart.TimeSeries{
                    Name:    "收入",
                    XValues: xvalues,
                    YValues: yvalues1,
                },
                chart.TimeSeries{
                    Name:    "支出",
                    XValues: xvalues,
                    YValues: yvalues2,
                },
            },
        }
        buffer := bytes.NewBuffer([]byte{})
        graph.Render(chart.PNG, buffer)
        c.Data(http.StatusOK, "image/png", buffer.Bytes())
    })
    r.Run(":8080")
}

Langkah 4: Mulakan pelayan web

Dengan carta, kita boleh memulakan pelayan web. Dalam bahasa Go, kita boleh menggunakan Gin untuk memulakan pelayan web. Berikut ialah contoh kod:

func main() {
    db, err := gorm.Open("sqlite3", "test.db")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        var records []Record
        db.Find(&records)
        // 生成图表的代码
        // ...
        c.Data(http.StatusOK, "image/png", buffer.Bytes())
    })
    r.Run(":8080")
}

Sekarang, kita boleh melawati http://localhost:8080 dalam penyemak imbas untuk melihat carta baris yang dijana.

Kesimpulan

Bahasa Go, sebagai bahasa pengaturcaraan berprestasi tinggi, boleh membantu kami melakukan visualisasi data dengan mudah. Dalam artikel ini, kami memperkenalkan cara menggunakan bahasa Go untuk menjana carta dengan cepat dan menggunakan Gin untuk memulakan pelayan web untuk memaparkan carta ini. Jika anda berminat dengan visualisasi data, maka menggunakan bahasa Go untuk visualisasi data ialah pilihan yang sangat baik.

Atas ialah kandungan terperinci Bolehkah bahasa Go digunakan untuk visualisasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn