22 lines
822 B
Racket
22 lines
822 B
Racket
#lang racket
|
|
(require racket/gui mrlib/snip-canvas plot)
|
|
|
|
(define ((make-current-value-renderer fn) snip event x y)
|
|
(define overlays
|
|
(and x y (eq? (send event get-event-type) 'motion)
|
|
(list (vrule x #:style 'long-dash)
|
|
(point-label (vector x (fn x)) #:anchor 'auto))))
|
|
(send snip set-overlay-renderers overlays))
|
|
|
|
(define (make-plot-snip width height)
|
|
(define snip (plot-snip (function sin)
|
|
#:x-min 0 #:x-max (* 2 pi) #:y-min -1.5 #:y-max 1.5
|
|
#:width width #:height height))
|
|
(send snip set-mouse-event-callback (make-current-value-renderer sin))
|
|
snip)
|
|
|
|
(define toplevel (new frame% [label "Plot"] [width 500] [height 200]))
|
|
(define canvas (new snip-canvas% [parent toplevel] [make-snip make-plot-snip]))
|
|
(send toplevel show #t)
|
|
|