欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 使用windows窗口展示go-echarts图表

使用windows窗口展示go-echarts图表

2024/11/30 11:45:18 来源:https://blog.csdn.net/raoxiaoya/article/details/144010346  浏览:    关键词:使用windows窗口展示go-echarts图表

在使用golang画一些柱状图,折线图,饼状图等图表的时候,go-echarts应该是个很不错的选择,它直接集成了 Apache ECharts,因此使用起来非常方便,但是它都是生成一个html文件,你还得在浏览器打开,略显麻烦,无写了个程序来直接展示页面,无需浏览器,代码很简单,直接粘贴,目前只支持windows系统。

package mainimport ("encoding/base64""log"webview2 "github.com/jchv/go-webview2""math/rand""github.com/go-echarts/go-echarts/v2/charts""github.com/go-echarts/go-echarts/v2/opts"
)/*go get -u github.com/go-echarts/go-echarts/v2/...https://echarts.apache.org/examples/zh/index.html#chart-type-line*/func main() {echarts()
}// 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 echarts() {// create a new bar instancebar := charts.NewBar()// set some global options like Title/Legend/ToolTip or anything elsebar.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 instancebar.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)show(bar.RenderContent())
}func show(content []byte) {w := webview2.NewWithOptions(webview2.WebViewOptions{Debug:     true,AutoFocus: true,WindowOptions: webview2.WindowOptions{Title:  "Minimal webview example",Width:  800,Height: 600,IconId: 2,Center: true,},})if w == nil {log.Fatalln("Failed to load webview.")}defer w.Destroy()w.Navigate(`data:text/html;base64,`+base64.StdEncoding.EncodeToString(content))w.Run()
}

运行后
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com