Mercurial > octave
annotate scripts/plot/draw/line.m @ 29358:0a5b15007766 stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 Feb 2021 09:52:15 -0500 |
parents | 05c1217d0dae |
children | 7854d5752dd2 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
28093
diff
changeset
|
3 ## Copyright (C) 2005-2021 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27898
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
6257 | 7 ## |
8 ## This file is part of Octave. | |
9 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
6257 | 11 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
13 ## (at your option) any later version. |
6257 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
18 ## GNU General Public License for more details. |
6257 | 19 ## |
20 ## You should have received a copy of the GNU General Public License | |
7016 | 21 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
6257 | 25 |
26 ## -*- texinfo -*- | |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
27 ## @deftypefn {} {} line () |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
28 ## @deftypefnx {} {} line (@var{x}, @var{y}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
29 ## @deftypefnx {} {} line (@var{x}, @var{y}, @var{z}) |
26211
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
30 ## @deftypefnx {} {} line ("xdata", @var{x}, "ydata", @var{y}) |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
31 ## @deftypefnx {} {} line ("xdata", @var{x}, "ydata", @var{y}, "zdata", @var{z}) |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
32 ## @deftypefnx {} {} line (@dots{}, @var{property}, @var{value}) |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
33 ## @deftypefnx {} {} line (@var{hax}, @dots{}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
34 ## @deftypefnx {} {@var{h} =} line (@dots{}) |
26211
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
35 ## Create a line object from @var{x} and @var{y} (and possibly @var{z}) and |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
36 ## insert it in the current axes. |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
37 ## |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
38 ## In the standard calling form the data @var{x}, @var{y}, and @var{z} may be |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
39 ## scalars, vectors, or matrices. In the case of matrix inputs, @code{line} |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
40 ## will attempt to orient scalars and vectors so the results can be plotted. |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
41 ## This requires that one of the dimensions of the vector match either the |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
42 ## number of rows or the number of columns of the matrix. |
26293
095eb3a04f43
doc: grammarcheck m-file scripts ahead of 5.0 release.
Rik <rik@octave.org>
parents:
26211
diff
changeset
|
43 ## |
26211
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
44 ## In the low-level calling form (50% higher performance) where the data is |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
45 ## specified by name (@code{line ("xdata", @var{x}, @dots{})}) the data must be |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
46 ## vectors. If no data is specified (@code{line ()}) then |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
47 ## @w{@code{@var{x} == @var{y} = [0, 1]}}. |
6895 | 48 ## |
17015
761d2be77e78
__plt_get_axis_arg__.m: Simplify code for finding parent in axis PROP/VAL pairs.
Rik <rik@octave.org>
parents:
17014
diff
changeset
|
49 ## Multiple property-value pairs may be specified for the line object, but they |
6895 | 50 ## must appear in pairs. |
17015
761d2be77e78
__plt_get_axis_arg__.m: Simplify code for finding parent in axis PROP/VAL pairs.
Rik <rik@octave.org>
parents:
17014
diff
changeset
|
51 ## |
26211
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
52 ## If called with only @var{property}/@var{value} pairs then any unspecified |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
53 ## properties use their default values as specified on the root object. |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
54 ## |
24431
0c6cedafc71e
doc: Use 'axes' rather than 'axis' appropriately in docstrings.
Rik <rik@octave.org>
parents:
23219
diff
changeset
|
55 ## If the first argument @var{hax} is an axes handle, then plot into this axes, |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17097
diff
changeset
|
56 ## rather than the current axes returned by @code{gca}. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17097
diff
changeset
|
57 ## |
21546
f7f97d7e9294
doc: Wrap m-file docstrings to 79 characters + newline (80 total).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
58 ## The optional return value @var{h} is a graphics handle (or vector of |
f7f97d7e9294
doc: Wrap m-file docstrings to 79 characters + newline (80 total).
Rik <rik@octave.org>
parents:
20852
diff
changeset
|
59 ## handles) to the line objects created. |
17015
761d2be77e78
__plt_get_axis_arg__.m: Simplify code for finding parent in axis PROP/VAL pairs.
Rik <rik@octave.org>
parents:
17014
diff
changeset
|
60 ## |
24551
a7b6502b5cb5
doc: Add @ref from graphic object creation functions to list of graphic properties (bug #52816).
Rik <rik@octave.org>
parents:
24534
diff
changeset
|
61 ## Programming Note: The full list of properties is documented at |
28093
05c1217d0dae
doc: Create better looking cross references in Info format (bug #57845).
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
62 ## @ref{Line Properties}. |
26211
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
63 ## |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
64 ## The function @code{line} differs from @code{plot} in that line objects are |
69bd0cfbd123
Add color and marker cycling and (bug #39036).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
65 ## inserted in to the current axes without first clearing the plot. |
17015
761d2be77e78
__plt_get_axis_arg__.m: Simplify code for finding parent in axis PROP/VAL pairs.
Rik <rik@octave.org>
parents:
17014
diff
changeset
|
66 ## @seealso{image, patch, rectangle, surface, text} |
6257 | 67 ## @end deftypefn |
68 | |
69 function h = line (varargin) | |
70 | |
17036
08dd9458684a
Overhaul __plt_get_axis_arg__ and newplot functions to avoid creating unnecessary axes.
Rik <rik@octave.org>
parents:
17015
diff
changeset
|
71 ## Get axis argument which may be in a 'parent' PROP/VAL pair |
17015
761d2be77e78
__plt_get_axis_arg__.m: Simplify code for finding parent in axis PROP/VAL pairs.
Rik <rik@octave.org>
parents:
17014
diff
changeset
|
72 [hax, varargin] = __plt_get_axis_arg__ ("line", varargin{:}); |
761d2be77e78
__plt_get_axis_arg__.m: Simplify code for finding parent in axis PROP/VAL pairs.
Rik <rik@octave.org>
parents:
17014
diff
changeset
|
73 |
17036
08dd9458684a
Overhaul __plt_get_axis_arg__ and newplot functions to avoid creating unnecessary axes.
Rik <rik@octave.org>
parents:
17015
diff
changeset
|
74 if (isempty (hax)) |
08dd9458684a
Overhaul __plt_get_axis_arg__ and newplot functions to avoid creating unnecessary axes.
Rik <rik@octave.org>
parents:
17015
diff
changeset
|
75 hax = gca (); |
26851
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
76 oldfig = []; |
18821
87c3848cf3c0
Fix bug when hggroup used with primitive graphic object (bug #42532).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
77 else |
87c3848cf3c0
Fix bug when hggroup used with primitive graphic object (bug #42532).
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
78 hax = hax(1); |
26851
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
79 oldfig = get (0, "currentfigure"); |
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
80 set (0, "currentfigure", ancestor (hax, "figure")); |
17036
08dd9458684a
Overhaul __plt_get_axis_arg__ and newplot functions to avoid creating unnecessary axes.
Rik <rik@octave.org>
parents:
17015
diff
changeset
|
81 endif |
08dd9458684a
Overhaul __plt_get_axis_arg__ and newplot functions to avoid creating unnecessary axes.
Rik <rik@octave.org>
parents:
17015
diff
changeset
|
82 |
26851
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
83 unwind_protect |
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
84 htmp = __line__ (hax, varargin{:}); |
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
85 unwind_protect_cleanup |
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
86 if (! isempty (oldfig)) |
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
87 set (0, "currentfigure", oldfig); |
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
88 endif |
4d7665fc8f6c
line.m: Fix creation of unwanted axes (bug #55840)
Rik <rik@octave.org>
parents:
26376
diff
changeset
|
89 end_unwind_protect |
6257 | 90 |
6405 | 91 if (nargout > 0) |
17015
761d2be77e78
__plt_get_axis_arg__.m: Simplify code for finding parent in axis PROP/VAL pairs.
Rik <rik@octave.org>
parents:
17014
diff
changeset
|
92 h = htmp; |
6257 | 93 endif |
94 | |
95 endfunction | |
13096 | 96 |
16828
ddac88d32d6a
Make demos in plot m-files compatible with Matlab for running comparison script.
Rik <rik@octave.org>
parents:
14849
diff
changeset
|
97 |
14535
8150ccfffa22
Apply broadcasting to inputs of line().
Ben Abbott <bpabbott@mac.com>
parents:
14363
diff
changeset
|
98 %!demo |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
99 %! clf; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
21580
diff
changeset
|
100 %! line ([0 1], [0.8 0.8], "linestyle", "-", "color", "b"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
21580
diff
changeset
|
101 %! line ([0 1], [0.6 0.6], "linestyle", "--", "color", "g"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
21580
diff
changeset
|
102 %! line ([0 1], [0.4 0.4], "linestyle", ":", "color", "r"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
21580
diff
changeset
|
103 %! line ([0 1], [0.2 0.2], "linestyle", "-.", "color", "k"); |
18885
a8cacb2e98da
line.m: Add new %!demo of different linestyles.
Rik <rik@octave.org>
parents:
18821
diff
changeset
|
104 %! ylim ([0 1]); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
21580
diff
changeset
|
105 %! title ("line() with various linestyles"); |
18885
a8cacb2e98da
line.m: Add new %!demo of different linestyles.
Rik <rik@octave.org>
parents:
18821
diff
changeset
|
106 %! legend ('"-"', '"--"', '":"', '"-."', 'location', 'eastoutside'); |
a8cacb2e98da
line.m: Add new %!demo of different linestyles.
Rik <rik@octave.org>
parents:
18821
diff
changeset
|
107 |
a8cacb2e98da
line.m: Add new %!demo of different linestyles.
Rik <rik@octave.org>
parents:
18821
diff
changeset
|
108 %!demo |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21546
diff
changeset
|
109 %! clf; |
14535
8150ccfffa22
Apply broadcasting to inputs of line().
Ben Abbott <bpabbott@mac.com>
parents:
14363
diff
changeset
|
110 %! x = 0:0.3:10; |
8150ccfffa22
Apply broadcasting to inputs of line().
Ben Abbott <bpabbott@mac.com>
parents:
14363
diff
changeset
|
111 %! y1 = cos (x); |
8150ccfffa22
Apply broadcasting to inputs of line().
Ben Abbott <bpabbott@mac.com>
parents:
14363
diff
changeset
|
112 %! y2 = sin (x); |
14849
f6d3d5b0bd42
test: Use Octave coding conventions for tests for line() and toc().
Rik <octave@nomad.inbox5.com>
parents:
14535
diff
changeset
|
113 %! subplot (3,1,1); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
21580
diff
changeset
|
114 %! args = {"color", "b", "marker", "s"}; |
16828
ddac88d32d6a
Make demos in plot m-files compatible with Matlab for running comparison script.
Rik <rik@octave.org>
parents:
14849
diff
changeset
|
115 %! line ([x(:), x(:)], [y1(:), y2(:)], args{:}); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
21580
diff
changeset
|
116 %! title ("Test broadcasting for line()"); |
14849
f6d3d5b0bd42
test: Use Octave coding conventions for tests for line() and toc().
Rik <octave@nomad.inbox5.com>
parents:
14535
diff
changeset
|
117 %! subplot (3,1,2); |
16828
ddac88d32d6a
Make demos in plot m-files compatible with Matlab for running comparison script.
Rik <rik@octave.org>
parents:
14849
diff
changeset
|
118 %! line (x(:), [y1(:), y2(:)], args{:}); |
14849
f6d3d5b0bd42
test: Use Octave coding conventions for tests for line() and toc().
Rik <octave@nomad.inbox5.com>
parents:
14535
diff
changeset
|
119 %! subplot (3,1,3); |
16828
ddac88d32d6a
Make demos in plot m-files compatible with Matlab for running comparison script.
Rik <rik@octave.org>
parents:
14849
diff
changeset
|
120 %! line ([x(:), x(:)+pi/2], y1(:), args{:}); |
ddac88d32d6a
Make demos in plot m-files compatible with Matlab for running comparison script.
Rik <rik@octave.org>
parents:
14849
diff
changeset
|
121 %! xlim ([0 10]); |
14535
8150ccfffa22
Apply broadcasting to inputs of line().
Ben Abbott <bpabbott@mac.com>
parents:
14363
diff
changeset
|
122 |
13096 | 123 %!test |
13124
2ea1658ad049
Don't use explicit figure number for tests to avoid interference with any figures opened by user.
Kai Habel <kai.habel@gmx.de>
parents:
13115
diff
changeset
|
124 %! hf = figure ("visible", "off"); |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
13124
diff
changeset
|
125 %! unwind_protect |
13096 | 126 %! h = line; |
13115
cd808de114c1
Allow surface and patch to be called w/o arguments. Adding and fixing tests.
Kai Habel <kai.habel@gmx.de>
parents:
13111
diff
changeset
|
127 %! assert (findobj (hf, "type", "line"), h); |
13096 | 128 %! assert (get (h, "xdata"), [0 1], eps); |
129 %! assert (get (h, "ydata"), [0 1], eps); | |
130 %! assert (get (h, "type"), "line"); | |
13115
cd808de114c1
Allow surface and patch to be called w/o arguments. Adding and fixing tests.
Kai Habel <kai.habel@gmx.de>
parents:
13111
diff
changeset
|
131 %! assert (get (h, "color"), get (0, "defaultlinecolor")); |
cd808de114c1
Allow surface and patch to be called w/o arguments. Adding and fixing tests.
Kai Habel <kai.habel@gmx.de>
parents:
13111
diff
changeset
|
132 %! assert (get (h, "linestyle"), get (0, "defaultlinelinestyle")); |
cd808de114c1
Allow surface and patch to be called w/o arguments. Adding and fixing tests.
Kai Habel <kai.habel@gmx.de>
parents:
13111
diff
changeset
|
133 %! assert (get (h, "linewidth"), get (0, "defaultlinelinewidth"), eps); |
13096 | 134 %! unwind_protect_cleanup |
135 %! close (hf); | |
136 %! end_unwind_protect |