Support NaN values
This commit is contained in:
parent
4ff1f01e5c
commit
5c8e3c9234
1 changed files with 17 additions and 11 deletions
|
@ -12,12 +12,18 @@
|
|||
|
||||
(def +default-colors+ '(green blue red yellow cyan magenta white))
|
||||
|
||||
(def (nanmin . rest)
|
||||
(apply min (filter finite? rest)))
|
||||
|
||||
(def (nanmax . rest)
|
||||
(apply max (filter finite? rest)))
|
||||
|
||||
(def (scale-fn lo hi)
|
||||
(lambda (x) (/ (- x lo) (- hi lo))))
|
||||
|
||||
(def (draw-canvas xs ys x-scale-fn y-scale-fn width: (width 160) height: (height 80))
|
||||
(def canvas (make-braille-canvas (1+ height) (1+ width)))
|
||||
(for ((x xs) (y ys))
|
||||
(for ((x xs) (y ys) when (and (finite? x) (finite? y)))
|
||||
(braille-canvas-set! canvas
|
||||
(inexact->exact (floor (* height (y-scale-fn y))))
|
||||
(inexact->exact (floor (* width (x-scale-fn x))))
|
||||
|
@ -65,27 +71,27 @@
|
|||
(match lsts
|
||||
([ys] (let ((xmin 0)
|
||||
(xmax (length ys))
|
||||
(ymin (apply min ys))
|
||||
(ymax (apply max ys)))
|
||||
(ymin (apply nanmin ys))
|
||||
(ymax (apply nanmax ys)))
|
||||
(values xmin xmax ymin ymax
|
||||
[(draw-canvas (iota (length ys)) ys
|
||||
(scale-fn xmin xmax)
|
||||
(scale-fn ymin ymax)
|
||||
width: width height: height)])))
|
||||
([xs ys] (let ((xmin (apply min xs))
|
||||
(xmax (apply max xs))
|
||||
(ymin (apply min ys))
|
||||
(ymax (apply max ys)))
|
||||
([xs ys] (let ((xmin (apply nanmin xs))
|
||||
(xmax (apply nanmax xs))
|
||||
(ymin (apply nanmin ys))
|
||||
(ymax (apply nanmax ys)))
|
||||
(values xmin xmax ymin ymax
|
||||
[(draw-canvas xs ys
|
||||
(scale-fn xmin xmax)
|
||||
(scale-fn ymin ymax)
|
||||
width: width height: height)])))
|
||||
([xs . yss] (let* ((xmin (apply min xs))
|
||||
(xmax (apply max xs))
|
||||
([xs . yss] (let* ((xmin (apply nanmin xs))
|
||||
(xmax (apply nanmax xs))
|
||||
(all-ys (flatten yss))
|
||||
(ymin (apply min all-ys))
|
||||
(ymax (apply max all-ys))
|
||||
(ymin (apply nanmin all-ys))
|
||||
(ymax (apply nanmax all-ys))
|
||||
(x-scale-fn (scale-fn xmin xmax))
|
||||
(y-scale-fn (scale-fn ymin ymax)))
|
||||
(values xmin xmax ymin ymax
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue