better test too

main
bel 2024-02-14 09:50:56 -07:00
parent 2ef4799a94
commit b084195a6f
2 changed files with 16 additions and 27 deletions

View File

@ -30,7 +30,7 @@ type Data struct {
}
func newConfig() (Config, error) {
dataPoints := envOr("DATA_POINTS", `[[1, 1], [2, 2], [2, 2]]`)
dataPoints := envOr("DATA_POINTS", `[[1, 1], [1, 2], [2, 1], [2, 1], [4, 3]]`)
dataLabels := envOr("DATA_LABELS", ``)
dataWeightFloor := envOr("DATA_WEIGHT_FLOOR", `12`)
dataWeightRange := envOr("DATA_WEIGHT_RANGE", `20`)
@ -103,19 +103,12 @@ func envOr(k, v string) string {
return v
}
func (d Data) AsScatterData() (string, []float64, string, []opts.ScatterData, error) {
func (d Data) AsScatterData() (string, string, []opts.ScatterData, error) {
if !(2 <= len(d.Labels) && len(d.Labels) <= 3) {
return "", nil, "", nil, fmt.Errorf("cannot map %d dimensions to [2,3]", len(d.Labels))
return "", "", nil, fmt.Errorf("cannot map %d dimensions to [2,3]", len(d.Labels))
}
d = d.weighXYasZ()
xs := make([]float64, 0)
for i := range d.Points {
xs = append(xs, d.Points[i][0])
}
slices.Sort(xs)
xs = slices.Compact(xs)
zs := make([]float64, 0)
for i := range d.Points {
zs = append(zs, d.Points[i][2])
@ -128,19 +121,17 @@ func (d Data) AsScatterData() (string, []float64, string, []opts.ScatterData, er
}
log.Printf("d=%+v zmin=%v zmax=%v zrange=%v", d.Points, zmin, zmax, zrange)
ys := make([]opts.ScatterData, 0)
for i := range xs {
for j := range d.Points {
x := d.Points[j][0]
if x == xs[i] {
ys = append(ys, opts.ScatterData{
Value: d.Points[j][1],
SymbolSize: d.Weight.Floor + int((float64(d.Weight.Range)*(d.Points[j][2]-zmin))/zrange),
})
}
}
result := make([]opts.ScatterData, 0)
for i := range d.Points {
x := d.Points[i][0]
y := d.Points[i][1]
z := d.Points[i][2]
result = append(result, opts.ScatterData{
Value: []float64{x, y},
SymbolSize: d.Weight.Floor + int((float64(d.Weight.Range)*(z-zmin))/zrange),
})
}
return d.Labels[0], xs, d.Labels[1], ys, nil
return d.Labels[0], d.Labels[1], result, nil
}
func (d Data) weighXYasZ() Data {

View File

@ -27,12 +27,11 @@ func run(ctx context.Context) error {
}
log.Printf("%+v", config)
x, xs, y, ys, err := config.Data.AsScatterData()
x, y, data, err := config.Data.AsScatterData()
if err != nil {
return err
}
log.Printf("%s: %v", x, xs)
log.Printf("%s: %v", y, ys)
log.Printf("(%s, %s) = %v", x, y, data)
scatter := charts.NewScatter()
scatter.SetGlobalOptions(charts.WithTitleOpts(opts.Title{
@ -50,8 +49,7 @@ func run(ctx context.Context) error {
NameLocation: "middle",
NameGap: config.Data.Weight.Floor + config.Data.Weight.Range,
}))
scatter.SetXAxis(xs).
AddSeries(y, ys)
scatter.AddSeries(y, data)
buff := bytes.NewBuffer(nil)
if err := scatter.Render(buff); err != nil {