Mercurial > hg > octave-lyh
annotate scripts/plot/ribbon.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 | c728c87f43ba |
children | f8b485d09ac6 |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
14092
diff
changeset
|
1 ## Copyright (C) 2007-2012 Kai Habel |
7163 | 2 ## |
7164 | 3 ## This file is part of Octave. |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
7163 | 6 ## under the terms of the GNU General Public License as published by |
7164 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
7163 | 9 ## |
7164 | 10 ## Octave is distributed in the hope that it will be useful, but |
7163 | 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 | |
7164 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
7163 | 18 |
19 ## -*- texinfo -*- | |
9143
74d5c1a4ca96
Eliminate 'unbalanced parentheses in @def...' error during texi2pdf.
Rik <rdrider0-list@yahoo.com>
parents:
9040
diff
changeset
|
20 ## @deftypefn {Function File} {} ribbon (@var{x}, @var{y}, @var{width}) |
74d5c1a4ca96
Eliminate 'unbalanced parentheses in @def...' error during texi2pdf.
Rik <rdrider0-list@yahoo.com>
parents:
9040
diff
changeset
|
21 ## @deftypefnx {Function File} {} ribbon (@var{y}) |
74d5c1a4ca96
Eliminate 'unbalanced parentheses in @def...' error during texi2pdf.
Rik <rdrider0-list@yahoo.com>
parents:
9040
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{h} =} ribbon (@dots{}) |
16849
c728c87f43ba
ribbon.m: Fix typo of extra spaces in docstring.
Rik <rik@octave.org>
parents:
14868
diff
changeset
|
23 ## Plot a ribbon plot for the columns of @var{y} vs. @var{x}. The |
7164 | 24 ## optional parameter @var{width} specifies the width of a single ribbon |
25 ## (default is 0.75). If @var{x} is omitted, a vector containing the | |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
26 ## row numbers is assumed (1:rows (Y)). |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
27 ## |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
28 ## The optional return value @var{h} is a vector of graphics handles to |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
29 ## the surface objects representing each ribbon. |
7163 | 30 ## @end deftypefn |
31 | |
32 ## Author: Kai Habel <kai.habel at gmx.de> | |
33 | |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
34 function h = ribbon (x, y, width = 0.75) |
7163 | 35 |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
36 if (nargin < 1 || nargin > 3) |
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
37 print_usage (); |
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
38 endif |
7163 | 39 |
40 if (nargin == 1) | |
7166 | 41 y = x; |
42 if (isvector (y)) | |
43 y = y(:); | |
7163 | 44 endif |
7166 | 45 [nr, nc] = size (y); |
46 x = repmat ((1:nr)', 1, nc); | |
8610
85c9906abfd1
use endif and endfor instead of end
John W. Eaton <jwe@octave.org>
parents:
7650
diff
changeset
|
47 endif |
7163 | 48 |
7166 | 49 if (isvector (x) && isvector (y)) |
50 if (length (x) != length (y)) | |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
51 error ("ribbon: vectors X and Y must have the same length"); |
7163 | 52 else |
7166 | 53 [x, y] = meshgrid (x, y); |
7163 | 54 endif |
55 else | |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
56 if (! size_equal (x, y)) |
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
57 error ("ribbon: matrices X and Y must have the same size"); |
7163 | 58 endif |
59 endif | |
60 | |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
61 newplot (); |
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
62 |
7166 | 63 [nr, nc] = size (y); |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
64 htmp = zeros (nc, 1); |
7163 | 65 |
66 for c = nc:-1:1 | |
7166 | 67 zz = [y(:,c), y(:,c)]; |
68 yy = x(:,c); | |
69 xx = [c - width / 2, c + width / 2]; | |
70 [xx, yy] = meshgrid (xx, yy); | |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
71 cc = repmat (c, size (zz)); |
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
72 htmp(c) = surface (xx, yy, zz, cc); |
7163 | 73 endfor |
74 | |
7164 | 75 if (! ishold ()) |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
76 ax = get (htmp(1), "parent"); |
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
77 set (ax, "view", [-37.5, 30], "box", "off", |
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
78 "xgrid", "on", "ygrid", "on", "zgrid", "on"); |
7163 | 79 endif |
80 | |
81 if (nargout > 0) | |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
82 h = htmp; |
7163 | 83 endif |
7164 | 84 |
85 endfunction | |
7269 | 86 |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
87 |
7269 | 88 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14229
diff
changeset
|
89 %! clf; |
14247
c4fa5e0b6193
test: Make surface demos reproducible by setting colormap to default at start of demo.
Rik <octave@nomad.inbox5.com>
parents:
14237
diff
changeset
|
90 %! colormap ('default'); |
7269 | 91 %! [x, y, z] = sombrero (); |
92 %! [x, y] = meshgrid (x, y); | |
93 %! ribbon (y, z); | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
94 |
14229
741340c02522
ribbon.m: Simplify code and return a column vector of graphics handles.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
95 %!FIXME: Could have some input validation tests here |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14247
diff
changeset
|
96 |