1 Star 0 Fork 6

Uber Endung / go-charts

forked from Gitee 极速下载 / go-charts 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

go-charts

license Build Status

go-charts基于go-chart生成数据图表,无其它模块的依赖纯golang的实现,支持svgpng的输出,Apache ECharts在前端开发中得到众多开发者的认可,go-charts兼容Apache ECharts的配置参数,简单快捷的生成相似的图表(svgpng),方便插入至Email或分享使用。下面为常用的几种图表截图(两种模式):

go-charts

支持图表类型

暂仅支持三种的图表类型:line, bar 以及 pie

示例

go-charts兼容了echarts的参数配置,可简单的使用json形式的配置字符串则可快速生成图表。

package main

import (
	"os"

	charts "github.com/vicanso/go-charts"
)

func main() {
	buf, err := charts.RenderEChartsToPNG(`{
		"title": {
			"text": "Line"
		},
		"xAxis": {
			"type": "category",
			"data": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
		},
		"series": [
			{
				"data": [150, 230, 224, 218, 135, 147, 260]
			}
		]
	}`)
	if err != nil {
		panic(err)
	}
	os.WriteFile("output.png", buf, 0600)
}

参数说明

  • theme 颜色主题,支持darklight模式,默认为light
  • padding 图表的内边距,单位px。支持以下几种模式的设置
    • padding: 5 设置内边距为5
    • padding: [5, 10] 设置上下的内边距为 5,左右的内边距为 10
    • padding:[5, 10, 5, 10] 分别设置上右下左边距
  • title 图表标题,包括标题内容、高度、颜色等
    • title.text 标题内容
    • title.left 标题与容器左侧的距离,可设置为left, right, center, 20% 以及 20 这样的具体数值
    • title.top 标题与容器顶部的距离,暂仅支持具体数值,如20
    • title.textStyle.color 标题文字颜色
    • title.textStyle.fontSize 标题文字字体大小
    • title.textStyle.height 标题高度
    • title.textStyle.fontFamily 标题文字的字体系列,需要注意此配置是会影响整个图表的字体
  • xAxis 直角坐标系grid中的x轴,由于go-charts仅支持单一个x轴,因此若参数为数组多个x轴,只使用第一个配置
    • xAxis.boundaryGap 坐标轴两边留白策略,仅支持三种设置方式null, true或者falsenulltrue时则数据点展示在两个刻度中间
    • xAxis.splitNumber 坐标轴的分割段数,需要注意的是这个分割段数只是个预估值,最后实际显示的段数会在这个基础上根据分割后坐标轴刻度显示的易读程度作调整
    • xAxis.data x轴的展示文案,暂只支持字符串数组,如["Mon", "Tue"],其数量需要与展示点一致
  • yAxis 直角坐标系grid中的y轴,最多支持两个y轴
    • yAxis.min 坐标轴刻度最小值,若不设置则自动计算
    • yAxis.max 坐标轴刻度最大值,若不设置则自动计算
    • yAxis.axisLabel.formatter 刻度标签的内容格式器,如"formatter": "{value} kg"
  • legend 图表中不同系列的标记
    • legend.data 图例的数据数组,为字符串数组,如["Email", "Video Ads"]
    • legend.align 图例标记和文本的对齐,默认为标记靠左left
    • legend.padding legend的padding,配置方式与图表的padding一致
    • legend.left legend离容器左侧的距离,其值可以为具体的像素值(20)或百分比(20%)
    • legend.right legend离容器右侧的距离,其值可以为具体的像素值(20)或百分比(20%)
  • series 图表的数据项列表
    • series.type 图表的展示类型,暂支持line, bar以及pie,需要注意pie只能单独使用
    • series.label.show 是否显示文本标签(默认为对应的值)
    • series.label.distance 距离图形元素的距离
    • series.yAxisIndex 该数据项使用的y轴,默认为0,对yAxis的配置对应
    • series.itemStyle.color 该数据项展示时使用的颜色
    • series.data 数据项对应的数据数组,支持以下形式的数据:
      • 数值 常用形式,数组数据为浮点数组,如[1.1, 2,3, 5.2]
      • 结构体 pie图表或bar图表中指定样式使用,如[{"value": 1048, "name": "Search Engine"},{"value": 735,"name": "Direct"}]

性能

简单的图表生成PNG在20ms左右,而SVG的性能则更快,性能上比起使用chrome headless加载echarts图表展示页面再截图生成的方式大幅度提升,满足简单的图表生成需求。

goos: darwin
goarch: amd64
pkg: github.com/vicanso/go-charts
cpu: Intel(R) Core(TM) i5-8257U CPU @ 1.40GHz
BenchmarkEChartsRenderPNG-8           60          17765045 ns/op         2492854 B/op       1007 allocs/op
BenchmarkEChartsRenderSVG-8          282           4303042 ns/op        32622688 B/op       2983 allocs/op

中文字符

默认使用的字符为Roboto为英文字体库,因此如果需要显示中文字符需要增加中文字体库,InstallFont函数可添加对应的字体库,成功添加之后则指定title.textStyle.fontFamily即可。 在浏览器中使用svg时,如果指定的fontFamily不支持中文字符,展示的中文并不会乱码,但是会导致在计算字符宽度等错误。

MIT License Copyright (c) 2021 Tree Xie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

go-charts基于 go-chart 生成数据图表,无其它模块的依赖纯golang的实现,支持svg与png的输出,Apache ECharts在前端开发中得到众多开发者的认可 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/endung/go-charts.git
git@gitee.com:endung/go-charts.git
endung
go-charts
go-charts
main

搜索帮助