# go-echart **Repository Path**: chlcool/go-echart ## Basic Information - **Project Name**: go-echart - **Description**: echart tool written by go - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-03 - **Last Updated**: 2024-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
🎨 The adorable charts library for Golang.
> 如果一门语言可以用来写爬虫,那么它就需要一个优雅的数据可视化库。 --- by dongdong 在 Golang 这门语言中,目前数据可视化的第三方库还是特别少,[go-echarts](https://github.com/go-echarts/go-echarts) 的开发就是为了填补这部分的空隙。[Echarts](http://echarts.apche.com/) 是百度开源的非常优秀的可视化图表库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。也有其他语言为其实现了相应语言版本的接口,如 Python 的 [pyecharts](https://github.com/pyecharts/pyecharts),go-echarts 也是借鉴了 pyecharts 的一些设计思想。 ### 🔰 安装 GOPATH ```shell $ 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 ```shell require github.com/go-echarts/go-echarts/v2 ``` ### ⏳ 版本 go-echarts 现在有 v1 和 v2 两个大版本,v1 版本的代码位于 v1 分支下,v2 代码位于 master 分支下。两个大版本是不兼容的,且 v1 不会再维护了,所以欢迎使用 v2 版本。 ### ✨ 特性 * 简洁的 API 设计,使用如丝滑般流畅 * 囊括了 **25+** 种常见图表,应有尽有 * 高度灵活的配置项,可轻松搭配出精美的图表 * 详细的文档和示例,帮助开发者更快的上手项目 * 多达 **400+** 地图,为地理数据可视化提供强有力的支持 ### 📝 使用 仅需要几行核心代码就可画出美观的图表 ```golang 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 服务将图标直接渲染出来 ```golang 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) } ```  ### 🔖 Gallery