Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan bahasa Go untuk visualisasi data?

Bagaimana untuk menggunakan bahasa Go untuk visualisasi data?

WBOY
WBOYasal
2023-06-10 12:06:071044semak imbas

Dengan perkembangan pesat analisis data dan kecerdasan buatan, visualisasi data telah menjadi alat yang semakin penting. Visualisasi data bukan sahaja membantu orang memahami data dengan lebih intuitif, tetapi juga membantu orang ramai menemui maklumat dan corak yang tersembunyi dalam data dengan lebih baik. Bahasa Go juga merupakan alat yang sangat baik dalam hal ini. Sebagai bahasa pengaturcaraan berprestasi tinggi, bahasa Go mempunyai banyak ciri. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk visualisasi data.

Ciri bahasa Go

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.

Pustaka 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 melaksanakan visualisasi data dengan cepat. Berikut ialah langkah untuk visualisasi data menggunakan bahasa Go.

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 dalam 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 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 di tangan, 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

Sebagai bahasa pengaturcaraan berprestasi tinggi, bahasa Go 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, menggunakan bahasa Go untuk visualisasi data ialah pilihan yang sangat baik.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan bahasa Go untuk visualisasi data?. 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