PasteRack.org
Paste # 18770
2026-11-04 20:05:19

Forked from paste # 97561.

Fork as a new paste.

Paste viewed 47 times.


Embed:

plot/pict radian ticks

  1. #lang racket
  2. (require plot/pict)
  3.  
  4. (define step (/ pi 2))
  5. (define pi-ticks
  6.   (ticks
  7.    (λ (min max)
  8.      (for/list ([x (in-sequences
  9.                     (in-value 0)
  10.                     (in-inclusive-range step max step)
  11.                     (in-inclusive-range (- step) min (- step)))])
  12.        (pre-tick x #t)))
  13.  
  14.    (λ (min max _)
  15.      (define (pi/2-label i sign)
  16.        (define numerator (quotient i 2))
  17.        (define no-denom? (= i (* numerator 2)))
  18.        (define prefix (if sign "-" ""))
  19.        (if no-denom?
  20.            (format "~a~aπ" prefix (if (= 1 numerator) "" numerator))
  21.            (format "~a~aπ/2" prefix (if (= 1 i) "" i))))
  22.      (define (range->labels start end step sign)
  23.        (for/list ([_x (in-inclusive-range start end step)]
  24.                   [i (in-naturals 1)])
  25.          (pi/2-label i sign)))
  26.      (cons "0" (append (range->labels step max step #f)
  27.                        (range->labels (- step) min (- step) #t))))))
  28.  
  29. (define to (* 2 pi))
  30. (define from (- to))
  31. (parameterize ([plot-x-ticks pi-ticks])
  32.   (plot
  33.    (list
  34.     (axes)
  35.     (function sin from to #:label "sin(x)" #:color 'red)
  36.     (function cos from to #:label "cos(x)" #:color 'blue))
  37.    #:y-min -1.5 #:y-max 2))

=>

image