当前位置: 首页 > article >正文

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

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

package main

import (
	"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 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)

	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()
}

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


http://www.kler.cn/a/408749.html

相关文章:

  • 【Linux 篇】Docker 启动和停止的精准掌舵:操控指南
  • SATA接口不通分析案例分享
  • 部署一套开源客服系统,用户需要准备什么设备?
  • 身份证实名认证API接口助力电商购物安全
  • Apple Vision Pro开发002-新建项目配置
  • 如何在 UniApp 中实现 iOS 版本更新检测
  • Stable Diffusion中的自注意力替换技术与Diffusers实现
  • React中Ant Design组件日期编辑回显
  • 【FPGA开发】Vivado自定义封装IP核,绑定总线
  • ajax (一)
  • timm库加载的模型可视化
  • 【Python-办公自动化】实现自动化输出模板表格报告
  • MongoDB 中设置登录账号密码可以通过以下步骤实现
  • 基于SSM的婚庆管理系统+LW示例参考
  • 了解rk3588单片机
  • 大模型工程化部署:使用FastChat部署基于OpenAI API兼容大模型服务
  • 应用案例 | 西门子能源选用ASPION G-Log 2冲击记录仪,揭秘高压开关设备运输背后的安全保障
  • UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取
  • 零基础学指针(上)
  • Python爬取豆瓣电影全部分类数据并存入数据库
  • 【大数据学习 | Spark-Core】关于distinct算子
  • STM32完全学习——使用标准库完成PWM输出
  • Spring Cloud Consul实现选举机制
  • springboot 整合 rabbitMQ (延迟队列)
  • js函数声明
  • 在SQLyog中导入和导出数据库