summaryrefslogtreecommitdiffstats
path: root/charplot.scm
diff options
context:
space:
mode:
authorJames LewisMoss <dres@debian.org>1999-12-06 19:32:57 -0500
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:28 -0800
commitc394920caedf3dac1981bb6b10eeb47fd6e4bb21 (patch)
treef21194653a3554f747dde3df908df993c48db5a0 /charplot.scm
parent926b1b647ac830660933a5e63eb52d4a2552e264 (diff)
parentbd9733926076885e3417b74de76e4c9c7bc56254 (diff)
downloadslib-6ae63d86d3d60068cc7edaeadc9912b84880086b.tar.gz
slib-6ae63d86d3d60068cc7edaeadc9912b84880086b.zip
Import Debian changes 2c7-1debian/2c7-1
slib (2c7-1) unstable; urgency=low * New upstream. * Add slibconfig back in. slib (2c6-2) unstable; urgency=low * Remove the slib$(VERSION).info file. Cut the diff back down to size. slib (2c6-1) unstable; urgency=low * New upstream. * Move docs to /usr/share. Up standards version. add /usr/doc symlink. Move info files. Remove undocumented link. slib (2c5-6) unstable; urgency=low * Lowercase two vars in yasyn.scm (Fixes bug #37222) slib (2c5-5) unstable; urgency=low * Fix it so string-index isn't defined (now there is a strsrch:string-index) (Fixes #38812) slib (2c5-4) unstable; urgency=low * Don't run slibconfig in postinst. (Fixes bug #38253, #37733, #37715, #37746, #37809, #37917, #38123, #38462) slib (2c5-3) unstable; urgency=low * Run slibconfig in postinst. It was commented out there, but I don't see any old bug reports on why it was commented out, so let's try again. :) (Fixes bug #37221) slib (2c5-2) unstable; urgency=low * Link mklibcat.scm to mklibcat. Fixes a problem with using slib with guile. slib (2c5-1) unstable; urgency=low * New upstream. slib (2c3-4) unstable; urgency=low * New maintainer.
Diffstat (limited to 'charplot.scm')
-rw-r--r--charplot.scm26
1 files changed, 22 insertions, 4 deletions
diff --git a/charplot.scm b/charplot.scm
index 2a2a49a..2c64615 100644
--- a/charplot.scm
+++ b/charplot.scm
@@ -18,6 +18,7 @@
;each case.
(require 'sort)
+(require 'printf)
(define charplot:rows 24)
(define charplot:columns (output-port-width (current-output-port)))
@@ -43,6 +44,9 @@
(display str)
(charplot:printn! (- width (+ (string-length str) lpad)) #\ )))
+(define (charplot:number->string x)
+ (sprintf #f "%g" x))
+
(define (scale-it z scale)
(if (and (exact? z) (integer? z))
(quotient (* z (car scale)) (cadr scale))
@@ -86,8 +90,8 @@
(string-set! a (caar data) charplot:curve1)
(set! data (cdr data)))
(if (zero? (modulo (- ht xaxis) ystep))
- (let* ((v (number->string (/ (* (- ht xaxis) (cadr yscale))
- (car yscale))))
+ (let* ((v (charplot:number->string (/ (* (- ht xaxis) (cadr yscale))
+ (car yscale))))
(l (string-length v)))
(if (> l 10)
(display (substring v 0 10))
@@ -119,12 +123,16 @@
(charplot:center-print! xlabel (+ 12 fudge (- xstep/2)))
(do ((i fudge (+ i xstep)))
((> (+ i xstep) charplot:width))
- (charplot:center-print! (number->string (/ (* (- i yaxis) (cadr xscale))
- (car xscale)))
+ (charplot:center-print! (charplot:number->string
+ (/ (* (- i yaxis) (cadr xscale))
+ (car xscale)))
xstep))
(newline)))
(define (charplot:plot! data xlabel ylabel)
+ (cond ((array? data)
+ (set! data (map (lambda (lst) (cons (car lst) (cadr lst)))
+ (array->list data)))))
(let* ((xmax (apply max (map car data)))
(xmin (apply min (map car data)))
(xscale (find-scale charplot:width (- xmax xmin)))
@@ -139,4 +147,14 @@
data)
xlabel ylabel xmin xscale ymin yscale)))
+(define (plot-function func vlo vhi . npts)
+ (set! npts (if (null? npts) 100 (car npts)))
+ (let ((dats (make-array 0.0 npts 2)))
+ (array-index-map! (make-shared-array dats (lambda (idx) (list idx 0)) npts)
+ (lambda (idx) (+ vlo (* (- vhi vlo) (/ idx npts)))))
+ (array-map! (make-shared-array dats (lambda (idx) (list idx 1)) npts)
+ func
+ (make-shared-array dats (lambda (idx) (list idx 0)) npts))
+ (charplot:plot! dats "" "")))
+
(define plot! charplot:plot!)