| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package echart
- import (
- "github.com/go-echarts/go-echarts/v2/charts"
- "github.com/go-echarts/go-echarts/v2/opts"
- "github.com/go-echarts/go-echarts/v2/types"
- )
- type LineChartOpt struct {
- Global ChartOpt
- Smooth bool // 是否平滑过度
- }
- type LineChartData struct {
- Legend string // 图例名称
- Color *string // 图例颜色
- Stack *string // 图例堆叠名称,相同的名称会堆叠到一起
- Data []opts.LineData
- }
- func LineSmoothArea(opt LineChartOpt, data []LineChartData) *charts.Line {
- line := charts.NewLine()
- line.SetGlobalOptions(
- charts.WithInitializationOpts(opts.Initialization{
- Theme: types.ThemeShine,
- Width: "1280px",
- Height: "500px",
- }),
- charts.WithTitleOpts(opts.Title{
- Title: opt.Global.Title,
- Subtitle: opt.Global.Subtitle,
- }),
- charts.WithTooltipOpts(opts.Tooltip{
- Trigger: "axis",
- }),
- charts.WithXAxisOpts(opts.XAxis{
- Type: "time", // ⏰ 时间轴关键设置
- }),
- charts.WithLegendOpts(opts.Legend{
- Show: opts.Bool(true),
- }),
- )
- for _, d := range data {
- lineOpt := []charts.SeriesOpts{}
- lineChartOpt := opts.LineChart{}
- lineChartOpt.Smooth = opts.Bool(opt.Smooth)
- if d.Stack != nil {
- lineChartOpt.Stack = *d.Stack
- }
- lineOpt = append(lineOpt, charts.WithLineChartOpts(lineChartOpt))
- lineOpt = append(lineOpt, charts.WithAreaStyleOpts(opts.AreaStyle{
- Opacity: opts.Float(0.4),
- }))
- if d.Color != nil {
- lineOpt = append(lineOpt, charts.WithItemStyleOpts(opts.ItemStyle{
- Color: *d.Color, // 自定义每个系列颜色
- }))
- }
- line.AddSeries(d.Legend, d.Data, lineOpt...)
- }
- return line
- }
|