fix minmax defaults

This commit is contained in:
2023-01-13 17:01:34 -08:00
parent c29a30e687
commit 999d28ffda

View File

@@ -3,6 +3,7 @@ package common
import ( import (
"bytes" "bytes"
"image/color" "image/color"
"math"
"sync" "sync"
sc "github.com/taigrr/go-colorpallettes/simplecolor" sc "github.com/taigrr/go-colorpallettes/simplecolor"
@@ -17,7 +18,7 @@ func CreateGraph() bytes.Buffer {
} }
func init() { func init() {
colors := []string{"#767960", "#a7297f", "#e8ca89", "#f5efd6", "#858966"} colors := []string{"#767960", "#a7297f", "#e8ca89", "#f5efd6", "#158266"}
// colors = []string{"#000000", "#0e4429", "#006d32", "#26a641", "#39d353"} // colors = []string{"#000000", "#0e4429", "#006d32", "#26a641", "#39d353"}
for _, c := range colors { for _, c := range colors {
color := sc.FromHexString(c) color := sc.FromHexString(c)
@@ -32,7 +33,13 @@ func SetColorScheme(c []color.Color) {
} }
func ColorForFrequency(freq, min, max int) sc.SimpleColor { func ColorForFrequency(freq, min, max int) sc.SimpleColor {
if freq == 0 {
return sc.SimpleColor(0)
}
spread := max - min spread := max - min
if spread < len(colorScheme) {
return colorScheme[freq-min]
}
interval := float64(spread) / float64(len(colorScheme)) interval := float64(spread) / float64(len(colorScheme))
colorIndex := 0 colorIndex := 0
for i := float64(min); i < float64(freq); i += float64(interval) { for i := float64(min); i < float64(freq); i += float64(interval) {
@@ -44,13 +51,22 @@ func ColorForFrequency(freq, min, max int) sc.SimpleColor {
return colorScheme[colorIndex] return colorScheme[colorIndex]
} }
func MinMax(f []int) (int, int) { func MinMax(f []int) (int, int) {
min, max := 0, 0 min, max := math.MaxInt, math.MinInt
for _, x := range f { for _, x := range f {
if x == 0 {
continue
}
if x < min { if x < min {
min = x min = x
} else if x > max { } else if x > max {
max = x max = x
} }
} }
if min == math.MaxInt {
min = 0
}
if max == math.MinInt {
max = 0
}
return min, max return min, max
} }