首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >5k Star一个开源优雅的Go数据可视化库

5k Star一个开源优雅的Go数据可视化库

作者头像
开源日记
发布2023-03-10 16:46:05
发布2023-03-10 16:46:05
6890
举报
文章被收录于专栏:JVMGCJVMGC

如果一门语言可以用来写爬虫,那么它就需要一个优雅的数据可视化库。 --- by dongdong

在 Golang 这门语言中,目前数据可视化的第三方库还是特别少,go-echarts 的开发就是为了填补这部分的空隙。Apache ECharts 是非常优秀的可视化图表库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。也有其他语言为其实现了相应语言版本的接口,如 Python 的 pyecharts,go-echarts 也是借鉴了 pyecharts 的一些设计思想。

🔰 安装

GOPATH

代码语言:javascript
复制
$ go get -u github.com/go-echarts/go-echarts/...

# 因为 gomod 的特殊的版本管理方式,使用 go get 方式并不能直接使用 v2 go-echarts 🐶
# 不过可以通过以下方法使用新版本...
$ cd $go-echarts-project
$ mkdir v2 && mv charts components datasets opts render templates types v2

GoMod

代码语言:javascript
复制
require github.com/go-echarts/go-echarts/v2

⏳ 版本

go-echarts 现在有 v1 和 v2 两个大版本,v1 版本的代码位于 v1 分支下,v2 代码位于 master 分支下。两个大版本是不兼容的,且 v1 不会再维护了,所以欢迎使用 v2 版本。

✨ 特性

  • 简洁的 API 设计,使用如丝滑般流畅
  • 囊括了 25+ 种常见图表,应有尽有
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图,为地理数据可视化提供强有力的支持

📝 使用

仅需要几行核心代码就可画出美观的图表

代码语言:javascript
复制
package main

import (
 "math/rand"
 "os"

 "github.com/go-echarts/go-echarts/v2/charts"
 "github.com/go-echarts/go-echarts/v2/opts"
)

// generate random data for bar chart
func generateBarItems() []opts.BarData {
 items := make([]opts.BarData, 0)
 for i := 0; i < 7; i++ {
  items = append(items, opts.BarData{Value: rand.Intn(300)})
 }
 return items
}

func main() {
 // create a new bar instance
 bar := charts.NewBar()
 // set some global options like Title/Legend/ToolTip or anything else
 bar.SetGlobalOptions(charts.WithTitleOpts(opts.Title{
  Title:    "My first bar chart generated by go-echarts",
  Subtitle: "It's extremely easy to use, right?",
 }))

 // Put data into instance
 bar.SetXAxis([]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}).
  AddSeries("Category A", generateBarItems()).
  AddSeries("Category B", generateBarItems())
 // Where the magic happens
 f, _ := os.Create("bar.html")
 bar.Render(f)
}

Render 方法将会将渲染结果保存为 bar.html 文件

当然也可以使用启动 http 服务将图表直接渲染出来

代码语言:javascript
复制
package main

import (
 "math/rand"
 "net/http"

 "github.com/go-echarts/go-echarts/v2/charts"
 "github.com/go-echarts/go-echarts/v2/opts"
 "github.com/go-echarts/go-echarts/v2/types"
)

// generate random data for line chart
func generateLineItems() []opts.LineData {
 items := make([]opts.LineData, 0)
 for i := 0; i < 7; i++ {
  items = append(items, opts.LineData{Value: rand.Intn(300)})
 }
 return items
}

func httpserver(w http.ResponseWriter, _ *http.Request) {
 // create a new line instance
 line := charts.NewLine()
 // set some global options like Title/Legend/ToolTip or anything else
 line.SetGlobalOptions(
  charts.WithInitializationOpts(opts.Initialization{Theme: types.ThemeWesteros}),
  charts.WithTitleOpts(opts.Title{
   Title:    "Line example in Westeros theme",
   Subtitle: "Line chart rendered by the http server this time",
  }))

 // Put data into instance
 line.SetXAxis([]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}).
  AddSeries("Category A", generateLineItems()).
  AddSeries("Category B", generateLineItems()).
  SetSeriesOptions(charts.WithLineChartOpts(opts.LineChart{Smooth: true}))
 line.Render(w)
}

func main() {
 http.HandleFunc("/", httpserver)
 http.ListenAndServe(":8081", nil)
}

image

🔖 Gallery

地址:https://github.com/go-echarts/go-echarts

更多功能广大网友可以继续挖掘。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🔰 安装
  • ⏳ 版本
  • ✨ 特性
  • 📝 使用
  • 🔖 Gallery
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档