racket/collects/plot/scribblings/compat.scrbl
2012-06-14 17:20:05 -04:00

149 lines
5.0 KiB
Racket

#lang scribble/manual
@(require (for-label racket
racket/gui/base
plot/compat)
plot/compat
(only-in unstable/latent-contract/defthing
doc-apply))
@title[#:tag "compat"]{Compatibility Module}
@author["Alexander Friedman" "Jamie Raymond" "Neil Toronto"]
@defmodule[plot/compat]
This module provides an interface compatible with PLoT 5.1.3 and earlier.
@bold{Do not use both @racketmodname[plot] and @racketmodname[plot/compat] in the same module.}
It is tempting to try it, to get both the new features and comprehensive backward compatibility.
But to enable the new features, the objects plotted in @racketmodname[plot] have to be a different data type than the objects plotted in @racketmodname[plot/compat].
They do not coexist easily, and trying to make them do so will result in contract violations.
@; ----------------------------------------
@section[#:tag "plot"]{Plotting}
@doc-apply[plot]{
Plots @racket[data] in 2D, where @racket[data] is generated by
functions like @racket[points] or @racket[line].
A @racket[data] value is represented as a procedure that takes a
@racket[2d-plot-area%] instance and adds plot information to it.
The result is a @racket[image-snip%] for the plot. If an @racket[#:out-file]
path or port is provided, the plot is also written as a PNG image to
the given path or port.
The @racket[#:lncolor] keyword argument is accepted for backward compatibility, but does nothing.
}
@doc-apply[plot3d]{
Plots @racket[data] in 3D, where @racket[data] is generated by a
function like @racket[surface]. The arguments @racket[alt] and
@racket[az] set the viewing altitude (in degrees) and the azimuth
(also in degrees), respectively.
A 3D @racket[data] value is represented as a procedure that takes a
@racket[3d-plot-area%] instance and adds plot information to it.
The @racket[#:lncolor] keyword argument is accepted for backward compatibility, but does nothing.
}
@doc-apply[points]{
Creates 2D plot data (to be provided to @racket[plot]) given a list
of points specifying locations. The @racket[sym] argument determines
the appearance of the points. It can be a symbol, an ASCII character,
or a small integer (between -1 and 127). The following symbols are
known: @racket['pixel], @racket['dot], @racket['plus],
@racket['asterisk], @racket['circle], @racket['times],
@racket['square], @racket['triangle], @racket['oplus], @racket['odot],
@racket['diamond], @racket['5star], @racket['6star],
@racket['fullsquare], @racket['bullet], @racket['full5star],
@racket['circle1], @racket['circle2], @racket['circle3],
@racket['circle4], @racket['circle5], @racket['circle6],
@racket['circle7], @racket['circle8], @racket['leftarrow],
@racket['rightarrow], @racket['uparrow], @racket['downarrow].
}
@doc-apply[line]{
Creates 2D plot data to draw a line.
The line is specified in either functional, i.e. @math{y = f(x)}, or
parametric, i.e. @math{x,y = f(t)}, mode. If the function is
parametric, the @racket[mode] argument must be set to
@racket['parametric]. The @racket[t-min] and @racket[t-max] arguments
set the parameter when in parametric mode.
}
@doc-apply[error-bars]{
Creates 2D plot data for error bars given a list of vectors. Each
vector specifies the center of the error bar @math{(x,y)} as the first
two elements and its magnitude as the third.
}
@doc-apply[vector-field]{
Creates 2D plot data to draw a vector-field from a vector-valued
function.
}
@doc-apply[contour]{
Creates 2D plot data to draw contour lines, rendering a 3D function
a 2D graph cotours (respectively) to represent the value of the
function at that position.
}
@doc-apply[shade]{
Creates 2D plot data to draw like @racket[contour], except using
shading instead of contour lines.
}
@doc-apply[surface]{
Creates 3D plot data to draw a 3D surface in a 2D box, showing only
the @italic{top} of the surface.
}
@defproc[(mix [data (any/c . -> . void?)] ...)
(any/c . -> . void?)]{
Creates a procedure that calls each @racket[data] on its argument in
order. Thus, this function can composes multiple plot @racket[data]s
into a single data.
}
@doc-apply[plot-color?]{
Returns @racket[#t] if @racket[v] is one of the following symbols,
@racket[#f] otherwise:
@racketblock[
'white 'black 'yellow 'green 'aqua 'pink
'wheat 'grey 'blown 'blue 'violet 'cyan
'turquoise 'magenta 'salmon 'red
]}
@; ----------------------------------------
@section{Miscellaneous Functions}
@defproc[(derivative [f (real? . -> . real?)] [h real? .000001])
(real? . -> . real?)]{
Creates a function that evaluates the numeric derivative of
@racket[f]. The given @racket[h] is the divisor used in the
calculation.}
@defproc[(gradient [f (real? real? . -> . real?)] [h real? .000001])
((vector/c real? real?) . -> . (vector/c real? real?))]{
Creates a vector-valued function that computes the numeric gradient of
@racket[f].}
@defproc[(make-vec [fx (real? real? . -> . real?)] [fy (real? real? . -> . real?)])
((vector/c real? real?) . -> . (vector/c real? real?))]{
Creates a vector-valued function from two parts.}