charts/main.go

62 lines
1.3 KiB
Go

package main
import (
"context"
"log"
"os"
"os/signal"
"github.com/go-echarts/go-echarts/v2/charts"
"github.com/go-echarts/go-echarts/v2/opts"
)
func main() {
ctx, can := signal.NotifyContext(context.Background())
defer can()
if err := run(ctx); err != nil {
panic(err)
}
}
func run(ctx context.Context) error {
config, err := newConfig()
if err != nil {
return err
}
log.Printf("%+v", config)
x, xs, y, ys, err := config.Data.AsScatterData()
if err != nil {
return err
}
log.Printf("%s: %v", x, xs)
log.Printf("%s: %v", y, ys)
scatter := charts.NewScatter()
scatter.SetGlobalOptions(charts.WithTitleOpts(opts.Title{
Title: config.Data.Title,
Subtitle: config.Data.Subtitle,
}))
scatter.SetGlobalOptions(charts.WithLegendOpts(opts.Legend{Show: false}))
scatter.SetGlobalOptions(charts.WithXAxisOpts(opts.XAxis{
Name: x,
NameLocation: "middle",
NameGap: config.Data.Weight.Floor + config.Data.Weight.Range,
}))
scatter.SetGlobalOptions(charts.WithYAxisOpts(opts.YAxis{
Name: y,
NameLocation: "middle",
NameGap: config.Data.Weight.Floor + config.Data.Weight.Range,
}))
scatter.SetXAxis(xs).
AddSeries(y, ys)
f, _ := os.Create("/tmp/f")
defer f.Close()
if err := scatter.Render(f); err != nil {
return err
}
log.Println("firefox /tmp/f")
return nil
}