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

embedded/2024/11/25 13:53:16/

在使用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()
}

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


http://www.ppmy.cn/embedded/140392.html

相关文章

.Net框架以及桌面UI时间线

依托于.net框架&#xff0c;按照时间线可分为以下三种。 桌面应用的UI可分为以下三种。 2024.10.20

Linux应用编程(C语言编译过程)

目录 1. 举例 2.预处理 2.1 预处理命令 2.2 .i文件内容解读 3.编译 4.汇编 5.链接 5.1 链接方式 5.1.1 静态链接 5.1.2 动态链接 5.1.3 混合链接 1. 举例 Linux的C语言开发&#xff0c;一般选择GCC工具链进行编译&#xff0c;通过下面的例子来演示GCC如何使用&#…

【实战】基于urllib和BeautifulSoup爬取jsp网站的数据

文章目录 前言目标网站分析目标网页爬取数据解析导出数据其他问题处理分页检索及多关键字搜索去重cookie问题工具封装经验总结前言 网络数据爬取大致分为两类: 静态爬取:该种方式针对那种架构比较老的网站,使用模版方式,通过浏览器F12只能找到静态页面,找不到返回json数…

【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解

vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的&#xff0c;在大版本v3中彻底重写了这部分&#xff0c;使用了proxy这个数据代理的方式&#xff0c;来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为&#xff0…

RocketMQ的使⽤

初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种⽅式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要⻢上回复。 两种⽅式各有优劣&#xff0c;打电话可以⽴即得到响应&#xff0c;但…

macOS 无法安装第三方app,启用任何来源的方法

升级新版本 MacOS 后&#xff0c;安装下载的软件时&#xff0c;不能在 ”安全性与隐私” 中找不到 ”任何来源” 选项。 1. 允许展示任何来源 点击 启动器 (Launchpad) – 其他 (Other) – 终端 (Terminal)&#xff1a; 打开终端后&#xff0c;输入以下代码回车&#xff1a; …

Java安卓导航栏设计开发(实战篇)——第十一期

1&#xff0c;设计构思&#xff1a; 导航栏应当具备以下条件&#xff1a; 点击导航栏中的按钮&#xff0c;以用来切换界面点击导航栏应当只显示目前界面变色图标导航栏应当附贴到全部界面的最下方 ——既然需要附贴到最下方&#xff0c;可以使用【相对布局 <RelativeLayout…

《Python基础》之循环结构

目录 简介 一、for循环 1、基本语法与作用 2、使用 range() 函数配合 for 循环 3、嵌套的for循环 二、while循环 1、基本语法与作用 2、while 循环嵌套 &#xff08;1&#xff09;、while循环与while循环嵌套 &#xff08;2&#xff09;、while循环与for循环嵌套 简介 …