123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- \section{Gnuplot package}
- \begin{Introduction}{GNUPLOT and REDUCE}
- The GNUPLOT system provides easy to use graphics output
- for curves or surfaces which are defined by
- formulas and/or data sets. GNUPLOT supports
- a great variety of output devices
- such as X-windows, VGA screen, postscript, picTeX.
- The REDUCE GNUPLOT package lets one use the GNUPLOT
- graphical output directly from inside REDUCE, either for
- the interactive display of curves/surfaces or for the production
- of pictures on paper.
- Note that this package may not be supported on all system
- platforms.
- For a detailed description you should read the GNUPLOT
- system documentation, available together with the GNUPLOT
- installation material from several servers by anonymous FTP.
- The REDUCE developers thank the GNUPLOT people for their permission
- to distribute GNUPLOT together with REDUCE.
- \end{Introduction}
- \begin{Concept}{Axes names}
- Inside REDUCE the choice of variable names for a graph is completely
- free. For referring to the GNUPLOT axes the names
- X and Y for 2 dimensions, X,Y and Z for 3 dimensions are used
- in the usual schoolbook sense independent from the variables of
- the REDUCE expression.
- \begin{Examples}
- plot(w=sin(a),a=(0 .. 10),xlabel="angle",ylabel="sine");
- \end{Examples}
- \end{Concept}
- \begin{Type}{Pointset}
- \index{plot}
- A curve can be give as set of precomputed points (a polygon)
- in 2 or 3 dimensions. Such a point set is a \nameref{list}
- of points, where each point is a \nameref{list} 2 (or 3)
- numbers. These numbers are interpreted as \name{(x,y)}
- (or \name{x,y,z}) coordinates. All points of one set must have
- the same dimension.
- \begin{Examples}
- for i:=2:10 collect{i,factorial(i)};
- \end{Examples}
- Also a surface in 3d can be given by precomputed points,
- but only on a logically orthogonal mesh: the surface is defined
- by a list of curves (in 3d) which must have a uniform length.
- GNUPLOT then will draw an orthogonal mesh by first drawing the
- given lines, and second connecting the 1st point of the 1st curve
- with the 1st point of the 2nd curve, that one with the 1st point
- of the 3rd curve and so on for all curves and for all indexes.
- \end{Type}
- \begin{Command}{PLOT}
- \index{graphics}\index{plot}
- The command \name{plot} is the main entry for drawing a
- picture from inside REDUCE.
- \begin{Syntax}
- \name{plot}\(\meta{spec},\meta{spec},...\)
- \end{Syntax}
- where \meta{spec} is a \meta{function}, a \meta{range} or an \meta{option}.
- \meta{function}:
- - an expression depending
- on one unknown (e.g. \name{sin(x)} or two unknowns (e.g.
- \name{sin(x+y)},
- - an equation with a function on its right-hand
- side and a single name on its left-hand side (e.g.
- \name{z=sin(x+y)} where the name on the left-hand side specifies
- the dependent variable.
- - a list of functions:
- if in 2 dimensions the picture should have more than one
- curve the expressions can be given as list (e.g. \name{\{sin(x),cos(x)\}}).
- - an equation with zero left or right hand side describing
- an implicit curve in two dimensions (e.g. \name{x**3+x*y**3-9x=0}).
- - a point set: the graph can be given
- as point set in 2 dimensions or a \nameref{pointset} or pointset list
- in 3 dimensions.
- \meta{range}:
- Each dependent and independent variable can be limited
- to an interval by an equation where the left-hand side specifies
- the variable and the right-hand side defines the \nameref{interval},
- e.g. \name{x=( -3 .. 5)}.
- If omitted the independent variables
- range from -10 to 10 and the dependent variable is limited only
- by the precision of the IEEE floating point arithmetic.
- \meta{option}:
- An option can be an equation equating a variable
- and a value (in general a string), or a keyword(GNUPLOT switch).
- These have to be included in the gnuplot command arguments directly.
- Strings have to be enclosed in
- string quotes (see \nameref{string}). Available options are:
- \nameref{title}: assign a heading (default: empty)
- \nameref{xlabel}: set label for the x axis
- \nameref{ylabel}: set label for the y axis
- \nameref{zlabel}: set label for the z axis
- \nameref{terminal}: select an output device
- \nameref{size}: rescale the picture
- \nameref{view}: set a viewpoint
- \name{(no)}\nameref{contour}: 3d: add contour lines
- \name{(no)}\nameref{surface}: 3d: draw surface (default: yes)
- \name{(no)}\nameref{hidden3d}: 3d: remove hidden lines (default: no)
- \begin{Examples}
- plot(cos x);\\
- plot(s=sin phi,phi=(-3 .. 3));\\
- plot(sin phi,cos phi,phi=(-3 .. 3));\\
- plot (cos sqrt(x**2 + y**2),x=(-3 .. 3),y=(-3 .. 3),hidden3d);\\
- plot {{0,0},{0,1},{1,1},{0,0},{1,0},{0,1},{0.5,1.5},{1,1},{1,0}};\\
- \\
- on rounded;\\
- w:=for j:=1:200 collect {1/j*sin j,1/j*cos j,j/200}$\\
- plot w; \\
- \end{Examples}
- Additional control of the \name{plot} operation:
- \nameref{plotrefine},
- \nameref{plot_xmesh}, \nameref{plot_ymesh}, \nameref{trplot},
- \nameref{plotkeep}, \nameref{show_grid}.
- \end{Command}
- \begin{Command}{PLOTRESET}
- The command \name{plotreset} closes the current GNUPLOT windows.
- The next call to \nameref{plot} will create a new one. \name{plotreset}
- can also be used to reset the system status after technical problems.
- \begin{Syntax}
- \name{plotreset};
- \end{Syntax}
- \end{Command}
- \begin{Variable}{title}
- \index{plot}
- \nameref{plot} option:
- Assign a title to the GNUPLOT graph.
- \begin{Syntax}
- \name{title} = \meta{string}
- \end{Syntax}
- \begin{Examples}
- title="annual revenue in 1993"\\
- \end{Examples}
- \end{Variable}
- \begin{Variable}{xlabel}
- \index{plot}
- \nameref{plot} option:
- Assign a name to to the x axis (see \nameref{axes names}).
- \begin{Syntax}
- \name{xlabel} = \meta{string}
- \end{Syntax}
- \begin{Examples}
- xlabel="month"\\
- \end{Examples}
- \end{Variable}
- \begin{Variable}{ylabel}
- \index{plot}
- \nameref{plot} option:
- Assign a name to to the x axis (see \nameref{axes names}).
- \begin{Syntax}
- \name{ylabel} = \meta{string}
- \end{Syntax}
- \begin{Examples}
- ylabel="million forint"\\
- \end{Examples}
- \end{Variable}
- \begin{Variable}{zlabel}
- \index{plot}
- \nameref{plot} option:
- Assign a name to to the z axis (see \nameref{axes names}).
- \begin{Syntax}
- \name{zlabel} = \meta{string}
- \end{Syntax}
- \begin{Examples}
- zlabel="local weight"\\
- \end{Examples}
- \end{Variable}
- \begin{Variable}{terminal}
- \index{plot}
- \nameref{plot} option:
- Select a different output device. The possible values here
- depend highly on the facilities installed for your GNUPLOT
- software.
- \begin{Syntax}
- \name{terminal} = \meta{string}
- \end{Syntax}
- \begin{Examples}
- terminal="x11"\\
- \end{Examples}
- \end{Variable}
- \begin{Variable}{size}
- \index{plot}
- \nameref{plot} option:
- Rescale the graph (not the window!) in x and y direction.
- Default is 1.0 (no rescaling).
- \begin{Syntax}
- \name{size} = "\meta{sx},\meta{sy}"
- \end{Syntax}
- where \meta{sx},\meta{sy} are floating point number not too
- far from 1.0.
- \begin{Examples}
- size="0.7,1"\\
- \end{Examples}
- \end{Variable}
- \begin{Variable}{view}
- \index{plot}
- \nameref{plot} option:
- Set a new viewpoint by turning the object around the x and then
- around the z axis (see \nameref{axes names}).
- \begin{Syntax}
- \name{view} = "\meta{sx},\meta{sz}"
- \end{Syntax}
- where \meta{sx},\meta{sz} are floating point number representing
- angles in degrees.
- \begin{Examples}
- view="30,130"\\
- \end{Examples}
- \end{Variable}
- \begin{Switch}{contour}
- \index{plot}
- \nameref{plot} option:
- If \name{contour} is member of the options for a 3d \nameref{plot}
- contour lines are projected to the z=0 plane
- (see \nameref{axes names}). The absence of contour lines
- can be selected explicitly by including \name{nocontour}. Default
- is \name{nocontour}.
- \end{Switch}
- \begin{Switch}{surface}
- \index{plot}
- \nameref{plot} option:
- If \name{surface} is member of the options for a 3d \nameref{plot}
- the surface is drawn. The absence of the surface plotting
- can be selected by including \name{nosurface}, e.g. if
- only the \nameref{contour} should be visualized. Default is \name{surface}.
- \end{Switch}
- \begin{Switch}{hidden3d}
- \index{plot}
- \nameref{plot} option:
- If \name{hidden3d} is member of the options for a 3d \nameref{plot}
- hidden lines are removed from the picture. Otherwise a
- surface is drawn as transparent object. Default is
- \name{nohidden3d}. Selecting \name{hidden3d} increases the
- computing time substantially.
- \end{Switch}
- \begin{Switch}{PLOTKEEP}
- \index{plot}
- Normally all intermediate data sets are deleted after terminating
- a plot session. If the switch \name{plotkeep} is set \nameref{on},
- the data sets are kept for eventual post processing independent
- of REDUCE.
- \end{Switch}
- \begin{Switch}{PLOTREFINE}
- \index{plot}
- In general \nameref{plot} tries to generate smooth pictures by evaluating
- the functions at interior points until the distances are fine
- enough. This can require a lot of computing time if the
- single function evaluation is expensive. The refinement is
- controlled by the switch \name{plotrefine} which is \nameref{on}
- by default. When you turn it \nameref{off} the functions will
- be evaluated only at the basic points (see \nameref{plot_xmesh},
- \nameref{plot_ymesh}).
- \end{Switch}
- \begin{Variable}{plot_xmesh}
- \index{plot}
- The integer value of the global variable \name{plot_xmesh}
- defines the number of initial function evaluations in x
- direction (see \nameref{axes names}) for \nameref{plot}. For 2d graphs additional
- points will be used as long as \nameref{plotrefine} is \name{on}.
- For 3d graphs this number defines also the number of mesh lines
- orthogonal to the x axis.
- \end{Variable}
- \begin{Variable}{plot_ymesh}
- \index{plot}
- The integer value of the global variable \name{plot_ymesh}
- defines for 3d \nameref{plot} calls the number of function evaluations in y
- direction (see \nameref{axes names}) and the number of mesh lines
- orthogonal to the y axis.
- \end{Variable}
- \begin{Switch}{SHOW_GRID}
- \index{plot}
- The grid for localizing an implicitly defined curve in \nameref{plot}
- consists of triangles. These are computed initially equally distributed
- over the x-y plane controlled by \nameref{plot_xmesh}. The grid is
- refined adaptively in several levels. The final grid can be visualized
- by setting on the switch \name{show_grid}.
- \end{Switch}
- \begin{Switch}{TRPLOT}
- \index{plot}
- In general the interaction between REDUCE and GNUPLOT is performed
- as silently as possible. However, sometimes it might be useful
- to see the GNUPLOT commands generated by REDUCE, e.g. for a
- postprocessing of generated data sets independent of REDUCE.
- When the switch \name{trplot} is set on all GNUPLOT commands will
- be printed to the standard output additionally.
- \end{Switch}
|