6.3
9 Plot Contracts
9.1 Plot Element Contracts
Returns 
#t if 
value is a 2D 
renderer; that is, if 
plot can plot 
value.
See 
2D Renderers for functions that construct them.
Identifies values that meet the contract elem-contract, lists of such values, lists of lists, and so on.
9.2 Appearance Argument Contracts
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.
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.
| known-point-symbols : (listof symbol?)
 | 
| | = | | (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 symbols.
9.3 Appearance Argument List Contracts
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) | 
| 4 | 
| > (maybe-function-of-real-consumer (λ (x) x)) | 
| 10 | 
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?) to 
contour-intervals.
The function constructs colors from the values of the contour intervals.