From 6aad7b6067fad7a758110f63c02e0326fe30a9c3 Mon Sep 17 00:00:00 2001 From: vicanso Date: Sat, 25 Dec 2021 09:29:39 +0800 Subject: [PATCH] refactor: add examples --- README.md | 48 ++++++++++++++- assets/go-echarts.jpg | Bin 0 -> 117115 bytes axis.go | 16 +++-- echarts.go | 36 +++++++++++ echarts_test.go | 18 ++++++ examples/basic/main.go | 28 +++++++++ examples/{ => charts}/main.go | 109 +++++++++++++++++++++++----------- go.mod | 6 +- go.sum | 11 +++- series.go | 5 ++ 10 files changed, 231 insertions(+), 46 deletions(-) create mode 100644 assets/go-echarts.jpg create mode 100644 examples/basic/main.go rename examples/{ => charts}/main.go (79%) diff --git a/README.md b/README.md index 55e5760..270a338 100644 --- a/README.md +++ b/README.md @@ -1 +1,47 @@ -# go-chart \ No newline at end of file +# go-echarts + +![Alt](https://repobeats.axiom.co/api/embed/9071915842d72a909465be75eb6c12ffb7de2dcf.svg "Repobeats analytics image") + +[go-chart](https://github.com/wcharczuk/go-chart)是golang常用的可视化图表库,支持`svg`与`png`的输出,`Apache ECharts`在前端开发中得到众多开发者的认可。go-echarts则是结合两者的方式,兼容`Apache ECharts`的配置参数,简单快捷的生成相似的图表(`svg`或`png`),方便插入至Email或分享使用。下面为常用的几种图表截图: + +![](./assets/go-echarts.jpg) + +## 支持图表类型 + +暂仅支持三种的图表类型:`line`, `bar` 以及 `pie` + + +## 示例 + +`go-echarts`兼容了`echarts`的参数配置,可简单的使用json形式的配置字符串则可快速生成图表。 + +```go +package main + +import ( + "os" + + charts "github.com/vicanso/echarts" +) + +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) +} +``` \ No newline at end of file diff --git a/assets/go-echarts.jpg b/assets/go-echarts.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85032e588bd7f51c0c6f2722e8814c5632447726 GIT binary patch literal 117115 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

6KkA{N5mw1Syvig2AICy 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 {yylwSV-M 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 BB0m5C literal 0 HcmV?d00001 diff --git a/axis.go b/axis.go index 5b2be9e..42569a3 100644 --- a/axis.go +++ b/axis.go @@ -50,6 +50,16 @@ type YAxisOption struct { const axisStrokeWidth = 1 +func maxInt(values ...int) int { + result := 0 + for _, v := range values { + if v > result { + result = v + } + } + return result +} + // GetXAxisAndValues returns x axis by theme, and the values of axis. func GetXAxisAndValues(xAxis XAxis, tickPosition chart.TickPosition, theme string) (chart.XAxis, []float64) { data := xAxis.Data @@ -66,10 +76,8 @@ func GetXAxisAndValues(xAxis XAxis, tickPosition chart.TickPosition, theme strin xValues := make([]float64, size) ticks := make([]chart.Tick, 0) - maxTicks := xAxis.SplitNumber - if maxTicks == 0 { - maxTicks = 10 - } + // tick width + maxTicks := maxInt(xAxis.SplitNumber, 10) // 计息最多每个unit至少放多个 minUnitSize := originalSize / maxTicks diff --git a/echarts.go b/echarts.go index 02cede2..672a21a 100644 --- a/echarts.go +++ b/echarts.go @@ -188,6 +188,7 @@ type ECharsOptions struct { Data []ECharsSeriesData `json:"data"` Type string `json:"type"` YAxisIndex int `json:"yAxisIndex"` + ItemStyle EChartStyle `json:"itemStyle"` } `json:"series"` } @@ -201,7 +202,15 @@ func convertEChartsSeries(e *ECharsOptions) ([]Series, chart.TickPosition) { if seriesType == SeriesPie { series := make([]Series, len(e.Series[0].Data)) for index, item := range e.Series[0].Data { + style := chart.Style{} + if item.ItemStyle.Color != "" { + c := parseColor(item.ItemStyle.Color) + style.FillColor = c + style.StrokeColor = c + } + series[index] = Series{ + Style: style, Data: []SeriesData{ { Value: item.Value, @@ -219,6 +228,12 @@ func convertEChartsSeries(e *ECharsOptions) ([]Series, chart.TickPosition) { if item.Type == SeriesBar { tickPosition = chart.TickPositionBetweenTicks } + style := chart.Style{} + if item.ItemStyle.Color != "" { + c := parseColor(item.ItemStyle.Color) + style.FillColor = c + style.StrokeColor = c + } data := make([]SeriesData, len(item.Data)) for j, itemData := range item.Data { sd := SeriesData{ @@ -232,6 +247,7 @@ func convertEChartsSeries(e *ECharsOptions) ([]Series, chart.TickPosition) { data[j] = sd } series[index] = Series{ + Style: style, YAxisIndex: item.YAxisIndex, Data: data, Type: item.Type, @@ -317,3 +333,23 @@ func ParseECharsOptions(options string) (Options, error) { return e.ToOptions(), nil } + +func echartsRender(options string, rp chart.RendererProvider) ([]byte, error) { + o, err := ParseECharsOptions(options) + if err != nil { + return nil, err + } + g, err := New(o) + if err != nil { + return nil, err + } + return render(g, rp) +} + +func RenderEChartsToPNG(options string) ([]byte, error) { + return echartsRender(options, chart.PNG) +} + +func RenderEChartsToSVG(options string) ([]byte, error) { + return echartsRender(options, chart.SVG) +} diff --git a/echarts_test.go b/echarts_test.go index 99bf414..b06da53 100644 --- a/echarts_test.go +++ b/echarts_test.go @@ -28,6 +28,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/wcharczuk/go-chart/v2" + "github.com/wcharczuk/go-chart/v2/drawing" ) func TestConvertToArray(t *testing.T) { @@ -288,6 +289,9 @@ func TestParseECharsOptions(t *testing.T) { { "name": "Precipitation", "type": "bar", + "itemStyle": { + "color": "#0052d9" + }, "data": [2.6, 5.9, 9, 26.4, 28.7, 70.7, 175.6] }, { @@ -368,6 +372,20 @@ func TestParseECharsOptions(t *testing.T) { 2.6, 5.9, 9, 26.4, 28.7, 70.7, 175.6, }), Type: SeriesBar, + Style: chart.Style{ + StrokeColor: drawing.Color{ + R: 0, + G: 82, + B: 217, + A: 255, + }, + FillColor: drawing.Color{ + R: 0, + G: 82, + B: 217, + A: 255, + }, + }, }, { Data: NewSeriesDataListFromFloat([]float64{ diff --git a/examples/basic/main.go b/examples/basic/main.go new file mode 100644 index 0000000..906f32c --- /dev/null +++ b/examples/basic/main.go @@ -0,0 +1,28 @@ +package main + +import ( + "os" + + charts "github.com/vicanso/echarts" +) + +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) +} diff --git a/examples/main.go b/examples/charts/main.go similarity index 79% rename from examples/main.go rename to examples/charts/main.go index c07b49d..4cf72e2 100644 --- a/examples/main.go +++ b/examples/charts/main.go @@ -9,32 +9,44 @@ import ( var html = ` - - - - - - - go-echarts - - - {{body}} - + + + + + + + go-echarts + + +

+ ` @@ -43,10 +55,9 @@ var chartOptions = []map[string]string{ "title": "折线图", "option": `{ "title": { - "text": "line", + "text": "Line", "textAlign": "left", "textStyle": { - "color": "#333", "fontSize": 24, "height": 40 } @@ -214,6 +225,9 @@ var chartOptions = []map[string]string{ { "name": "Evaporation", "type": "bar", + "itemStyle": { + "color": "#0052d9" + }, "data": [2, 4.9, 7, 23.2, 25.6, 76.7, 135.6] }, { @@ -241,7 +255,7 @@ var chartOptions = []map[string]string{ }, "xAxis": { "type": "category", - "splitNumber": 12, + "splitNumber": 6, "data": ["01-01","01-02","01-03","01-04","01-05","01-06","01-07","01-08","01-09","01-10","01-11","01-12","01-13","01-14","01-15","01-16","01-17","01-18","01-19","01-20","01-21","01-22","01-23","01-24","01-25","01-26","01-27","01-28","01-29","01-30","01-31"] }, "yAxis": { @@ -300,19 +314,35 @@ var chartOptions = []map[string]string{ }, } -func render(theme string) ([]byte, error) { +type renderOptions struct { + theme string + width int + height int + onlyCharts bool +} + +func render(opts renderOptions) ([]byte, error) { data := bytes.Buffer{} for _, m := range chartOptions { - // if m["title"] != "多柱状图" { - // continue - // } chartHTML := []byte(`

{{title}}

{{option}}
{{svg}}
`) + if opts.onlyCharts { + chartHTML = []byte(`
+ {{svg}} +
`) + } o, err := charts.ParseECharsOptions(m["option"]) - o.Theme = theme + if opts.width > 0 { + o.Width = opts.width + } + if opts.height > 0 { + o.Height = opts.height + } + + o.Theme = opts.theme if err != nil { return nil, err } @@ -333,8 +363,17 @@ func render(theme string) ([]byte, error) { } func indexHandler(w http.ResponseWriter, r *http.Request) { + query := r.URL.Query() + opts := renderOptions{ + theme: query.Get("theme"), + } + if query.Get("view") == "grid" { + opts.width = 400 + opts.height = 200 + opts.onlyCharts = true + } - buf, err := render(r.URL.Query().Get("theme")) + buf, err := render(opts) if err != nil { w.WriteHeader(400) w.Write([]byte(err.Error())) diff --git a/go.mod b/go.mod index 0f43724..6ea9001 100644 --- a/go.mod +++ b/go.mod @@ -9,9 +9,9 @@ require ( ) require ( - github.com/davecgh/go-spew v1.1.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 // indirect - gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect + golang.org/x/image v0.0.0-20211028202545-6944b10bf410 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index c0579a4..51e8735 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,6 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= @@ -11,10 +12,14 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/wcharczuk/go-chart/v2 v2.1.0 h1:tY2slqVQ6bN+yHSnDYwZebLQFkphK4WNrVwnt7CJZ2I= github.com/wcharczuk/go-chart/v2 v2.1.0/go.mod h1:yx7MvAVNcP/kN9lKXM/NTce4au4DFN99j6i1OwDclNA= -golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 h1:QelT11PB4FXiDEXucrfNckHoFxwt8USGY1ajP1ZF5lM= golang.org/x/image v0.0.0-20200927104501-e162460cd6b5/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410 h1:hTftEOvwiOq2+O8k2D5/Q7COC7k5Qcrgc2TFURJYnvQ= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/series.go b/series.go index 37e6c71..36e57bd 100644 --- a/series.go +++ b/series.go @@ -37,6 +37,7 @@ type Series struct { Data []SeriesData XValues []float64 YAxisIndex int + Style chart.Style } const lineStrokeWidth = 2 @@ -75,6 +76,10 @@ func GetSeries(series []Series, tickPosition chart.TickPosition, theme string) [ DotColor: getSeriesColor(theme, index), DotWidth: dotWith, } + if !item.Style.StrokeColor.IsZero() { + style.StrokeColor = item.Style.StrokeColor + style.DotColor = item.Style.StrokeColor + } pointIndexOffset := 0 // 如果居中,需要多增加一个点 if tickPosition == chart.TickPositionBetweenTicks {