9 Plot Contracts
9.1 Plot Element Contracts
is a 2D renderer
; that is, if plot
can plot value
See 2D Renderers
for functions that construct them.
9.2 Appearance Argument Contracts
|(one-of/c 'top-left 'top 'top-right|
| 'left 'center 'right|
| 'bottom-left 'bottom 'bottom-right)|
A contract for very flexible color arguments.
Functions that accept a color/c
almost always convert it to an RGB triplet using ->color
The contract for #:style
arguments (when they refer to lines), and paramters such as line-style
For the meaning of integer pen styles, see ->pen-style
| (one-of/c 'transparent 'solid|
| 'bdiagonal-hatch 'fdiagonal-hatch 'crossdiag-hatch|
| 'horizontal-hatch 'vertical-hatch 'cross-hatch))|
The contract for #:style
arguments (when they refer to fills), and parameters such as interval-style
For the meaning of integer brush styles, see ->brush-style
|(list 'dot 'point 'pixel|
| 'plus 'times 'asterisk|
| '5asterisk 'odot 'oplus|
| 'otimes 'oasterisk 'o5asterisk|
| 'circle 'square 'diamond|
| 'triangle 'fullcircle 'fullsquare|
| 'fulldiamond 'fulltriangle 'triangleup|
| 'triangledown 'triangleleft 'triangleright|
| 'fulltriangleup 'fulltriangledown 'fulltriangleleft|
| 'fulltriangleright 'rightarrow 'leftarrow|
| 'uparrow 'downarrow '4star|
| '5star '6star '7star|
| '8star 'full4star 'full5star|
| 'full6star 'full7star 'full8star|
| 'circle1 'circle2 'circle3|
| 'circle4 'circle5 'circle6|
| 'circle7 'circle8 'bullet|
| 'fullcircle1 'fullcircle2 'fullcircle3|
| 'fullcircle4 'fullcircle5 'fullcircle6|
| 'fullcircle7 'fullcircle8)|
A list containing the symbols that are valid points
9.3 Appearance Argument List Contracts
(or/c out-contract (in-contract . -> . out-contract))
Returns a contract that accepts either a function from in-contract to out-contract, or a plain out-contract value.
|> (require racket/contract)|
|> (maybe-function-of-real-consumer 4)|
|> (maybe-function-of-real-consumer (λ (x) x))|
Many plot functions, such as contours and isosurfaces3d, optionally take lists of appearance values (such as (listof plot-color/c)) as arguments.
A very flexible argument contract would accept functions that produce lists of appearance values.
For example, contours would accept any f with contract (-> (listof real?) (listof plot-color/c)) for its #:colors argument.
When rendering a contour plot, contours would apply f to a list of the contour z values to get the contour colors.
However, most uses do not need this flexibility.
Therefore, plot’s functions accept either a list of appearance values or a function from a list of appropriate values to a list of appearance values.
The maybe-function/c function constructs contracts for such arguments.
In plot functions, if in-contract is a listof contract, the output list’s length need not be the same as the input list’s length.
If it is shorter, the appearance values will cycle; if longer, the tail will not be used.
If f is a function, applies f to args; otherwise returns f.
This is used inside many renderer-producing plot functions to convert maybe-function/c values to lists of appearance values.
This is equivalent to sending (λ _ '(1 2))
The next example is more sophisticated: it sends a function
-valued (plot-colors/c ivl?)
The function constructs colors from the values of the contour intervals.