diff options
| author | Jonas Knobloch <jonas.knobloch@t-online.de> | 2026-06-03 18:00:27 +0200 |
|---|---|---|
| committer | Jonas Knobloch <jonas.knobloch@t-online.de> | 2026-06-03 18:00:27 +0200 |
| commit | c7e991d05aa2c9c1fb1ef5b6e39f721d5bec36e3 (patch) | |
| tree | d4269ce8b5f7acde974f7762772f732c0f4e38ec | |
| parent | 306baa3f2a00b3cfc13371433a69456871ba69ee (diff) | |
Annotate plot with cutoff delta
| -rw-r--r-- | research/lesci/plot.go | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/research/lesci/plot.go b/research/lesci/plot.go index 07a0c20..f649833 100644 --- a/research/lesci/plot.go +++ b/research/lesci/plot.go @@ -3,9 +3,12 @@ package lesci import ( "context" "database/sql" + "fmt" "image/color" + "os" "path" "slices" + "strings" "gonum.org/v1/gonum/stat" "gonum.org/v1/plot" @@ -89,7 +92,24 @@ func render(pts plotter.XYs, inX, inY, oovX, oovY []float64, cutoff float64, out return err } - return p.Save(10*vg.Inch, 6*vg.Inch, out) + if err := addDelta(p, slices.Min(inX), aIn+bIn*cutoff, aOov+bOov*cutoff); err != nil { + return err + } + + if err := p.Save(10*vg.Inch, 6*vg.Inch, out); err != nil { + return err + } + + yIn := aIn + bIn*cutoff + yOov := aOov + bOov*cutoff + + delta := yOov - yIn + + txt := strings.TrimSuffix(out, path.Ext(out)) + ".txt" + + content := fmt.Sprintf("left: %.6f\nright: %.6f\ndiff: %.6f\n", yIn, yOov, delta) + + return os.WriteFile(txt, []byte(content), 0644) } func addScatter(p *plot.Plot, pts plotter.XYs) error { @@ -138,3 +158,20 @@ func addStep(p *plot.Plot, aIn, bIn, aOov, bOov, cutoff float64, c color.Color) return nil } + +func addDelta(p *plot.Plot, xMin, yIn, yOov float64) error { + delta := yOov - yIn + + labels, err := plotter.NewLabels(plotter.XYLabels{ + XYs: plotter.XYs{{X: xMin, Y: -19}}, + Labels: []string{fmt.Sprintf("δ = %.4f", delta)}, + }) + + if err != nil { + return err + } + + p.Add(labels) + + return nil +} |
