Mercurial > hg > octave-lyh
annotate scripts/plot/stairs.m @ 7935:85d6296d51e1
Add gcbo/gcbf functions.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 16 Jul 2008 14:28:48 -0400 |
parents | 95dce69538ec |
children | 9a6f4713f765 |
rev | line source |
---|---|
7017 | 1 ## Copyright (C) 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2004, |
2 ## 2005, 2006, 2007 John W. Eaton | |
2313 | 3 ## |
4 ## This file is part of Octave. | |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
7016 | 8 ## the Free Software Foundation; either version 3 of the License, or (at |
9 ## your option) any later version. | |
2313 | 10 ## |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
15 ## | |
16 ## You should have received a copy of the GNU General Public License | |
7016 | 17 ## along with Octave; see the file COPYING. If not, see |
18 ## <http://www.gnu.org/licenses/>. | |
245 | 19 |
3368 | 20 ## -*- texinfo -*- |
21 ## @deftypefn {Function File} {} stairs (@var{x}, @var{y}) | |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
22 ## @deftypefnx {Function File} {} stairs (@dots{}, @var{style}) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
23 ## @deftypefnx {Function File} {} stairs (@dots{}, @var{prop}, @var{val}) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
24 ## @deftypefnx {Function File} {} stairs (@var{h}, @dots{}) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
25 ## @deftypefnx {Function File} {@var{h} =} stairs (@dots{}) |
6895 | 26 ## Produce a stairstep plot. The arguments may be vectors or matrices. |
3426 | 27 ## |
2311 | 28 ## If only one argument is given, it is taken as a vector of y-values |
3368 | 29 ## and the x coordinates are taken to be the indices of the elements. |
3426 | 30 ## |
2311 | 31 ## If two output arguments are specified, the data are generated but |
32 ## not plotted. For example, | |
3426 | 33 ## |
3368 | 34 ## @example |
35 ## stairs (x, y); | |
36 ## @end example | |
3426 | 37 ## |
3368 | 38 ## @noindent |
2311 | 39 ## and |
3426 | 40 ## |
3368 | 41 ## @example |
6895 | 42 ## @group |
3368 | 43 ## [xs, ys] = stairs (x, y); |
44 ## plot (xs, ys); | |
6895 | 45 ## @end group |
3368 | 46 ## @end example |
3426 | 47 ## |
3368 | 48 ## @noindent |
2311 | 49 ## are equivalent. |
5642 | 50 ## @seealso{plot, semilogx, semilogy, loglog, polar, mesh, contour, |
6448 | 51 ## bar, xlabel, ylabel, title} |
3368 | 52 ## @end deftypefn |
4 | 53 |
2314 | 54 ## Author: jwe |
55 | |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
56 function [xs, ys] = stairs (varargin) |
4 | 57 |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
58 [ax, varargin, nargin] = __plt_get_axis_arg__ ("stairs", varargin{:}); |
4 | 59 |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
60 if (nargin < 1) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
61 print_usage (); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
62 else |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
63 if (nargout > 1) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
64 [h, xs, ys] = __stairs__ (false, varargin{:}); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
65 else |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
66 oldax = gca (); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
67 unwind_protect |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
68 axes (ax); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
69 newplot (); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
70 [h, xxs, yys] = __stairs__ (true, varargin{:}); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
71 unwind_protect_cleanup |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
72 axes (oldax); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
73 end_unwind_protect |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
74 endif |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
75 if (nargout == 1) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
76 xs = h; |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
77 endif |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
78 endif |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
79 endfunction |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
80 |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
81 function [h, xs, ys] = __stairs__ (doplot, varargin) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
82 |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
83 if (nargin == 1 || ischar (varargin{2})) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
84 idx = 1; |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
85 y = varargin {1}; |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
86 if (ismatrix (y)) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
87 if (isvector (y)) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
88 y = y(:); |
6257 | 89 endif |
90 x = 1:rows (y); | |
4 | 91 endif |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
92 else |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
93 idx = 2; |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
94 x = varargin{1}; |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
95 y = varargin{2}; |
6257 | 96 endif |
97 | |
98 if (ndims (x) > 2 || ndims (y) > 2) | |
99 error ("stairs: expecting 2-d arguments"); | |
100 endif | |
101 | |
102 vec_x = isvector (x); | |
103 | |
104 if (vec_x) | |
105 x = x(:); | |
106 endif | |
107 | |
108 if (isvector (y)) | |
109 y = y(:); | |
110 endif | |
111 | |
112 if (ismatrix (y)) | |
113 [nr, nc] = size (y); | |
114 if (vec_x) | |
115 x = repmat (x, [1, nc]); | |
116 else | |
117 [x_nr, x_nc] = size (x); | |
118 if (x_nr != nr || x_nc != nc) | |
119 error ("stairs: argument size mismatch"); | |
4 | 120 endif |
121 endif | |
122 endif | |
123 | |
6257 | 124 len = 2*nr - 1; |
125 | |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
126 xs = ys = zeros (len, nc); |
6257 | 127 |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
128 xs(1,:) = x(1,:); |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
129 ys(1,:) = y(1,:); |
6257 | 130 |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
131 x = x(2:nr,:); |
6257 | 132 ridx = 2:2:len-1; |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
133 xs(ridx,:) = x; |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
134 ys(ridx,:) = y(1:nr-1,:); |
6257 | 135 |
136 ridx = 3:2:len; | |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
137 xs(ridx,:) = x; |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
138 ys(ridx,:) = y(2:nr,:); |
6257 | 139 |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
140 if (doplot) |
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
141 h = plot (xs, ys, varargin{idx+1:end}); |
736 | 142 else |
7746
95dce69538ec
Allow additional options to stairs plots
David Bateman <dbateman@free.fr>
parents:
7245
diff
changeset
|
143 h = 0; |
4 | 144 endif |
145 | |
146 endfunction | |
7245 | 147 |
148 %!demo | |
149 %! x = 1:10; | |
150 %! y = rand (1, 10); | |
151 ## stairs (x, y); | |
152 | |
153 %!demo | |
154 %! x = 1:10; | |
155 %! y = rand (1, 10); | |
156 %! [xs, ys] = stairs (x, y); | |
157 %! plot (xs, ys); |