1 ## Copyright (C) 1993-2012 John W. Eaton
3 ## This file is part of Octave.
5 ## Octave is free software; you can redistribute it and/or modify it
6 ## under the terms of the GNU General Public License as published by
7 ## the Free Software Foundation; either version 3 of the License, or (at
8 ## your option) any later version.
10 ## Octave is distributed in the hope that it will be useful, but
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 ## General Public License for more details.
15 ## You should have received a copy of the GNU General Public License
16 ## along with Octave; see the file COPYING. If not, see
17 ## <http://www.gnu.org/licenses/>.
20 ## @deftypefn {Function File} {} plot (@var{y})
21 ## @deftypefnx {Function File} {} plot (@var{x}, @var{y})
22 ## @deftypefnx {Function File} {} plot (@var{x}, @var{y}, @var{property}, @var{value}, @dots{})
23 ## @deftypefnx {Function File} {} plot (@var{x}, @var{y}, @var{fmt})
24 ## @deftypefnx {Function File} {} plot (@var{h}, @dots{})
25 ## @deftypefnx {Function File} {@var{h} =} plot (@dots{})
26 ## Produce two-dimensional plots.
28 ## Many different combinations of arguments are possible. The simplest
36 ## where the argument is taken as the set of @var{y} coordinates and the
37 ## @var{x} coordinates are taken to be the indices of the elements
40 ## To save a plot, in one of several image formats such as PostScript
41 ## or PNG, use the @code{print} command.
43 ## If more than one argument is given, they are interpreted as
46 ## plot (@var{y}, @var{property}, @var{value}, @dots{})
53 ## plot (@var{x}, @var{y}, @var{property}, @var{value}, @dots{})
60 ## plot (@var{x}, @var{y}, @var{fmt}, @dots{})
64 ## and so on. Any number of argument sets may appear. The @var{x} and
65 ## @var{y} values are interpreted as follows:
69 ## If a single data argument is supplied, it is taken as the set of @var{y}
70 ## coordinates and the @var{x} coordinates are taken to be the indices of
71 ## the elements, starting with 1.
74 ## If the @var{x} is a vector and @var{y} is a matrix, then
75 ## the columns (or rows) of @var{y} are plotted versus @var{x}.
76 ## (using whichever combination matches, with columns tried first.)
79 ## If the @var{x} is a matrix and @var{y} is a vector,
80 ## @var{y} is plotted versus the columns (or rows) of @var{x}.
81 ## (using whichever combination matches, with columns tried first.)
84 ## If both arguments are vectors, the elements of @var{y} are plotted versus
85 ## the elements of @var{x}.
88 ## If both arguments are matrices, the columns of @var{y} are plotted
89 ## versus the columns of @var{x}. In this case, both matrices must have
90 ## the same number of rows and columns and no attempt is made to transpose
91 ## the arguments to make the number of rows match.
93 ## If both arguments are scalars, a single point is plotted.
96 ## Multiple property-value pairs may be specified, but they must appear
97 ## in pairs. These arguments are applied to the lines drawn by
100 ## If the @var{fmt} argument is supplied, it is interpreted as
101 ## follows. If @var{fmt} is missing, the default gnuplot line style
106 ## Set lines plot style (default).
109 ## Set dots plot style.
112 ## Interpreted as the plot color if @var{n} is an integer in the range 1 to
116 ## If @var{nm} is a two digit integer and @var{m} is an integer in the
117 ## range 1 to 6, @var{m} is interpreted as the point style. This is only
118 ## valid in combination with the @code{@@} or @code{-@@} specifiers.
121 ## If @var{c} is one of @code{"k"} (black), @code{"r"} (red), @code{"g"}
122 ## (green), @code{"b"} (blue), @code{"m"} (magenta), @code{"c"} (cyan),
123 ## or @code{"w"} (white), it is interpreted as the line plot color.
126 ## Here @code{"title"} is the label for the key.
133 ## Used in combination with the points or linespoints styles, set the point
137 ## Select the next unused point style.
140 ## The @var{fmt} argument may also be used to assign key titles.
141 ## To do so, include the desired title between semi-colons after the
142 ## formatting sequence described above, e.g., "+3;Key Title;"
143 ## Note that the last semi-colon is required and will generate an error if
146 ## Here are some plot examples:
149 ## plot (x, y, "@@12", x, y2, x, y3, "4", x, y4, "+")
152 ## This command will plot @code{y} with points of type 2 (displayed as
153 ## @samp{+}) and color 1 (red), @code{y2} with lines, @code{y3} with lines of
154 ## color 4 (magenta) and @code{y4} with points displayed as @samp{+}.
157 ## plot (b, "*", "markersize", 3)
160 ## This command will plot the data in the variable @code{b},
161 ## with points displayed as @samp{*} with a marker size of 3.
166 ## plot (t, cos(t), "-;cos(t);", t, sin(t), "+3;sin(t);");
170 ## This will plot the cosine and sine functions and label them accordingly
173 ## If the first argument is an axis handle, then plot into these axes,
174 ## rather than the current axis handle returned by @code{gca}.
176 ## The optional return value @var{h} is a graphics handle to the created plot.
178 ## @seealso{semilogx, semilogy, loglog, polar, mesh, contour, bar,
179 ## stairs, errorbar, xlabel, ylabel, title, print}
184 function retval = plot (varargin)
186 [h, varargin, nargs] = __plt_get_axis_arg__ ("plot", varargin{:});
196 tmp = __plt__ ("plot", h, varargin{:});
197 unwind_protect_cleanup
208 %% FIXME: Need demo or test for function