Mercurial > hg > octave-lyh
annotate scripts/plot/plot.m @ 16950:b34202b24212
fplot.m: Overhaul function for Matlab compatibility and performance (bug #38961).
* scripts/plot/fplot.m: Add ability to specify n,tol,fmt in any order and
simultaneously. Return data rather than plotting it if asked. Use
additional test on progress of algorithm to decide whether to quit. Add
%!demo and %!tests.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 11 Jul 2013 09:25:54 -0700 |
parents | fee211d42c5c |
children | 08dd9458684a |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
14001
diff
changeset
|
1 ## Copyright (C) 1993-2012 John W. Eaton |
2313 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
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 | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2313 | 9 ## |
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. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
245 | 18 |
3368 | 19 ## -*- texinfo -*- |
10687
a8ce6bdecce5
Improve documentation strings.
Rik <octave@nomad.inbox5.com>
parents:
10121
diff
changeset
|
20 ## @deftypefn {Function File} {} plot (@var{y}) |
6895 | 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{}) | |
10687
a8ce6bdecce5
Improve documentation strings.
Rik <octave@nomad.inbox5.com>
parents:
10121
diff
changeset
|
25 ## @deftypefnx {Function File} {@var{h} =} plot (@dots{}) |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
26 ## Produce two-dimensional plots. |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
27 ## |
11316
b7ff4a51ea88
plot.m: Eliminate present tense in first sentence of docstring.
Rik <octave@nomad.inbox5.com>
parents:
10791
diff
changeset
|
28 ## Many different combinations of arguments are possible. The simplest |
b7ff4a51ea88
plot.m: Eliminate present tense in first sentence of docstring.
Rik <octave@nomad.inbox5.com>
parents:
10791
diff
changeset
|
29 ## form is |
3426 | 30 ## |
3368 | 31 ## @example |
32 ## plot (@var{y}) | |
33 ## @end example | |
3426 | 34 ## |
3368 | 35 ## @noindent |
36 ## where the argument is taken as the set of @var{y} coordinates and the | |
11316
b7ff4a51ea88
plot.m: Eliminate present tense in first sentence of docstring.
Rik <octave@nomad.inbox5.com>
parents:
10791
diff
changeset
|
37 ## @var{x} coordinates are taken to be the indices of the elements |
3368 | 38 ## starting with 1. |
3426 | 39 ## |
5798 | 40 ## To save a plot, in one of several image formats such as PostScript |
41 ## or PNG, use the @code{print} command. | |
42 ## | |
3368 | 43 ## If more than one argument is given, they are interpreted as |
3426 | 44 ## |
3368 | 45 ## @example |
6895 | 46 ## plot (@var{y}, @var{property}, @var{value}, @dots{}) |
3368 | 47 ## @end example |
3426 | 48 ## |
3368 | 49 ## @noindent |
6895 | 50 ## or |
6459 | 51 ## |
52 ## @example | |
53 ## plot (@var{x}, @var{y}, @var{property}, @var{value}, @dots{}) | |
54 ## @end example | |
55 ## | |
56 ## @noindent | |
6895 | 57 ## or |
58 ## | |
59 ## @example | |
60 ## plot (@var{x}, @var{y}, @var{fmt}, @dots{}) | |
61 ## @end example | |
62 ## | |
63 ## @noindent | |
64 ## and so on. Any number of argument sets may appear. The @var{x} and | |
65 ## @var{y} values are interpreted as follows: | |
3426 | 66 ## |
3368 | 67 ## @itemize @bullet |
68 ## @item | |
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. | |
3426 | 72 ## |
3368 | 73 ## @item |
6672 | 74 ## If the @var{x} is a vector and @var{y} is a matrix, then |
6177 | 75 ## the columns (or rows) of @var{y} are plotted versus @var{x}. |
2311 | 76 ## (using whichever combination matches, with columns tried first.) |
3426 | 77 ## |
3368 | 78 ## @item |
6177 | 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}. | |
2311 | 81 ## (using whichever combination matches, with columns tried first.) |
3426 | 82 ## |
3368 | 83 ## @item |
84 ## If both arguments are vectors, the elements of @var{y} are plotted versus | |
85 ## the elements of @var{x}. | |
3426 | 86 ## |
3368 | 87 ## @item |
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. | |
3426 | 92 ## |
2311 | 93 ## If both arguments are scalars, a single point is plotted. |
3368 | 94 ## @end itemize |
3426 | 95 ## |
6895 | 96 ## Multiple property-value pairs may be specified, but they must appear |
97 ## in pairs. These arguments are applied to the lines drawn by | |
98 ## @code{plot}. | |
99 ## | |
3368 | 100 ## If the @var{fmt} argument is supplied, it is interpreted as |
101 ## follows. If @var{fmt} is missing, the default gnuplot line style | |
102 ## is assumed. | |
3426 | 103 ## |
3368 | 104 ## @table @samp |
105 ## @item - | |
106 ## Set lines plot style (default). | |
3426 | 107 ## |
3368 | 108 ## @item . |
109 ## Set dots plot style. | |
3426 | 110 ## |
3368 | 111 ## @item @var{n} |
112 ## Interpreted as the plot color if @var{n} is an integer in the range 1 to | |
113 ## 6. | |
3426 | 114 ## |
3368 | 115 ## @item @var{nm} |
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. | |
3426 | 119 ## |
3368 | 120 ## @item @var{c} |
6177 | 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. | |
3426 | 124 ## |
3717 | 125 ## @item ";title;" |
126 ## Here @code{"title"} is the label for the key. | |
127 ## | |
3368 | 128 ## @item + |
129 ## @itemx * | |
130 ## @itemx o | |
131 ## @itemx x | |
8088 | 132 ## @itemx ^ |
3368 | 133 ## Used in combination with the points or linespoints styles, set the point |
134 ## style. | |
10121
b5cc666da6ca
Support the '@' marker that was present in Octave 2.1.x
David Bateman <dbateman@free.fr>
parents:
9245
diff
changeset
|
135 ## |
b5cc666da6ca
Support the '@' marker that was present in Octave 2.1.x
David Bateman <dbateman@free.fr>
parents:
9245
diff
changeset
|
136 ## @item @@ |
b5cc666da6ca
Support the '@' marker that was present in Octave 2.1.x
David Bateman <dbateman@free.fr>
parents:
9245
diff
changeset
|
137 ## Select the next unused point style. |
3368 | 138 ## @end table |
3426 | 139 ## |
6895 | 140 ## The @var{fmt} argument may also be used to assign key titles. |
3683 | 141 ## To do so, include the desired title between semi-colons after the |
9040
dbd0c77e575e
Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
142 ## formatting sequence described above, e.g., "+3;Key Title;" |
3683 | 143 ## Note that the last semi-colon is required and will generate an error if |
144 ## it is left out. | |
145 ## | |
3368 | 146 ## Here are some plot examples: |
3426 | 147 ## |
3368 | 148 ## @example |
149 ## plot (x, y, "@@12", x, y2, x, y3, "4", x, y4, "+") | |
150 ## @end example | |
3426 | 151 ## |
3368 | 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{+}. | |
3426 | 155 ## |
3368 | 156 ## @example |
6459 | 157 ## plot (b, "*", "markersize", 3) |
3368 | 158 ## @end example |
3426 | 159 ## |
6672 | 160 ## This command will plot the data in the variable @code{b}, |
6459 | 161 ## with points displayed as @samp{*} with a marker size of 3. |
3683 | 162 ## |
163 ## @example | |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
9040
diff
changeset
|
164 ## @group |
3683 | 165 ## t = 0:0.1:6.3; |
166 ## plot (t, cos(t), "-;cos(t);", t, sin(t), "+3;sin(t);"); | |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
9040
diff
changeset
|
167 ## @end group |
3683 | 168 ## @end example |
169 ## | |
170 ## This will plot the cosine and sine functions and label them accordingly | |
171 ## in the key. | |
6820 | 172 ## |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
173 ## If the first argument is an axis handle, then plot into these axes, |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
174 ## rather than the current axis handle returned by @code{gca}. |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
175 ## |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
176 ## The optional return value @var{h} is a graphics handle to the created plot. |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
177 ## |
6895 | 178 ## @seealso{semilogx, semilogy, loglog, polar, mesh, contour, bar, |
179 ## stairs, errorbar, xlabel, ylabel, title, print} | |
3368 | 180 ## @end deftypefn |
4 | 181 |
2314 | 182 ## Author: jwe |
183 | |
6302 | 184 function retval = plot (varargin) |
4 | 185 |
10730
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10687
diff
changeset
|
186 [h, varargin, nargs] = __plt_get_axis_arg__ ("plot", varargin{:}); |
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10687
diff
changeset
|
187 |
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10687
diff
changeset
|
188 if (nargs < 1) |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
189 print_usage (); |
10730
390d93e20531
Plot commands now print usage information without errors
Rik <octave@nomad.inbox5.com>
parents:
10687
diff
changeset
|
190 endif |
7216 | 191 |
7215 | 192 oldh = gca (); |
193 unwind_protect | |
194 axes (h); | |
6820 | 195 newplot (); |
7215 | 196 tmp = __plt__ ("plot", h, varargin{:}); |
197 unwind_protect_cleanup | |
198 axes (oldh); | |
199 end_unwind_protect | |
6302 | 200 |
201 if (nargout > 0) | |
202 retval = tmp; | |
203 endif | |
4 | 204 |
205 endfunction | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
206 |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
207 |
15015 | 208 %!demo |
209 %! x = 1:5; y = 1:5; | |
210 %! plot (x,y,'g'); | |
211 %! title ('plot of green line at 45 degrees'); | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
212 |
15015 | 213 %!demo |
214 %! x = 1:5; y = 1:5; | |
215 %! plot (x,y,'g*'); | |
216 %! title ('plot of green stars along a line at 45 degrees'); | |
217 | |
218 %!demo | |
219 %! x1 = 1:5; y1 = 1:5; | |
220 %! x2 = 5:9; y2 = 5:-1:1; | |
221 %! plot (x1,y1,'bo-', x2,y2,'rs-'); | |
222 %! axis ('tight'); | |
223 %! title ('plot of blue circles ascending and red squares descending with connecting lines drawn'); | |
224 |