Better nanmin and nanmax functions
This commit is contained in:
parent
5426c11ef1
commit
f9719d087e
1 changed files with 10 additions and 10 deletions
|
@ -12,11 +12,11 @@
|
||||||
|
|
||||||
(def +default-colors+ '(green blue red yellow cyan magenta white))
|
(def +default-colors+ '(green blue red yellow cyan magenta white))
|
||||||
|
|
||||||
(def (nanmin . rest)
|
(def (nanmin lst)
|
||||||
(apply min (filter finite? rest)))
|
(for/fold (xmin +inf.0) (x lst when (finite? x)) (min xmin x)))
|
||||||
|
|
||||||
(def (nanmax . rest)
|
(def (nanmax lst)
|
||||||
(apply max (filter finite? rest)))
|
(for/fold (xmax -inf.0) (x lst when (finite? x)) (max xmax x)))
|
||||||
|
|
||||||
(def (scale-fn lo hi)
|
(def (scale-fn lo hi)
|
||||||
(lambda (x) (/ (- x lo) (- hi lo))))
|
(lambda (x) (/ (- x lo) (- hi lo))))
|
||||||
|
@ -76,18 +76,18 @@
|
||||||
(match lsts
|
(match lsts
|
||||||
([ys] (let ((xmin 0)
|
([ys] (let ((xmin 0)
|
||||||
(xmax (length ys))
|
(xmax (length ys))
|
||||||
(ymin (for/fold (ymin +nan.0) (y ys) (nanmin ymin y)))
|
(ymin (nanmin ys))
|
||||||
(ymax (for/fold (ymax +nan.0) (y ys) (nanmax ymax y))))
|
(ymax (nanmax ys)))
|
||||||
(values xmin xmax ymin ymax
|
(values xmin xmax ymin ymax
|
||||||
[(draw-canvas (iota (length ys)) ys
|
[(draw-canvas (iota (length ys)) ys
|
||||||
(scale-fn xmin xmax)
|
(scale-fn xmin xmax)
|
||||||
(scale-fn ymin ymax)
|
(scale-fn ymin ymax)
|
||||||
width: width height: height)])))
|
width: width height: height)])))
|
||||||
([xs . yss] (let* ((xmin (for/fold (xmin +nan.0) (x xs) (nanmin xmin x)))
|
([xs . yss] (let* ((xmin (nanmin xs))
|
||||||
(xmax (for/fold (xmax +nan.0) (x xs) (nanmax xmax x)))
|
(xmax (nanmax xs))
|
||||||
(all-ys (flatten yss))
|
(all-ys (flatten yss))
|
||||||
(ymin (for/fold (ymin +nan.0) (y all-ys) (nanmin ymin y)))
|
(ymin (nanmin all-ys))
|
||||||
(ymax (for/fold (ymax +nan.0) (y all-ys) (nanmax ymax y)))
|
(ymax (nanmax all-ys))
|
||||||
(x-scale-fn (scale-fn xmin xmax))
|
(x-scale-fn (scale-fn xmin xmax))
|
||||||
(y-scale-fn (scale-fn ymin ymax)))
|
(y-scale-fn (scale-fn ymin ymax)))
|
||||||
(values xmin xmax ymin ymax
|
(values xmin xmax ymin ymax
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue