3718
|
1 ## Copyright (C) 2000, Teemu Ikonen |
|
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 |
|
7 ## the Free Software Foundation; either version 2, or (at your option) |
|
8 ## any later version. |
|
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 |
|
16 ## along with Octave; see the file COPYING. If not, write to the Free |
|
17 ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA |
|
18 ## 02111-1307, USA. |
|
19 |
|
20 ## -*- texinfo -*- |
|
21 ## @deftypefn {Function File} {} errorbar (@var{args}) |
|
22 ## This function produces two-dimensional plots with errorbars. Many |
|
23 ## different combinations of arguments are possible. The simplest form is |
|
24 ## |
|
25 ## @example |
|
26 ## errorbar (@var{y}, @var{ey}) |
|
27 ## @end example |
|
28 ## |
|
29 ## @noindent |
|
30 ## where the first argument is taken as the set of @var{y} coordinates |
|
31 ## and the second argument @var{ey} is taken as the errors of the |
|
32 ## @var{y} values. @var{x} coordinates are taken to be the indices |
|
33 ## of the elements, starting with 1. |
|
34 ## |
|
35 ## If more than two arguments are given, they are interpreted as |
|
36 ## |
|
37 ## @example |
|
38 ## errorbar (@var{x}, @var{y}, ..., @var{fmt} ...) |
|
39 ## @end example |
|
40 ## |
|
41 ## @noindent |
|
42 ## where after @var{x} and @var{y} there can be up to four error |
|
43 ## parameters such as @var{ey}, @var{ex}, @var{ly}, @var{uy} etc., |
|
44 ## depending on the plot type. Any number of argument sets may appear, |
|
45 ## as long as they are separated with a format string @var{fmt}. |
|
46 ## |
|
47 ## If @var{y} is a matrix, @var{x} and error parameters must also be matrices |
|
48 ## having same dimensions. The columns of @var{y} are plotted versus the |
|
49 ## corresponding columns of @var{x} and errorbars are drawn from |
|
50 ## the corresponding columns of error parameters. |
|
51 ## |
|
52 ## If @var{fmt} is missing, yerrorbars ("~") plot style |
|
53 ## is assumed. |
|
54 ## If the @var{fmt} argument is supplied, it is interpreted as in |
|
55 ## normal plots (See __pltopt__). In addition the following |
|
56 ## plot styles are supported by errorbar: |
|
57 ## |
|
58 ## @table @samp |
|
59 ## @item ~ |
|
60 ## Set yerrorbars plot style (default). |
|
61 ## |
|
62 ## @item > |
|
63 ## Set xerrorbars plot style. |
|
64 ## |
|
65 ## @item ~> |
|
66 ## Set xyerrorbars plot style. |
|
67 ## |
|
68 ## @item # |
|
69 ## Set boxes plot style. |
|
70 ## |
|
71 ## @item #~ |
|
72 ## Set boxerrorbars plot style. |
|
73 ## |
|
74 ## @item #~> |
|
75 ## Set boxxyerrorbars plot style. |
|
76 ## |
|
77 ## @end table |
|
78 ## |
|
79 ## Examples: |
|
80 ## |
|
81 ## @example |
|
82 ## errorbar(@var{x}, @var{y}, @var{ex}, ">") |
|
83 ## @end example |
|
84 ## |
|
85 ## xerrorbar plot of @var{y} versus @var{x} with @var{x} errorbars drawn from |
|
86 ## @var{x}-@var{ex} to @var{x}+@var{ex}. |
|
87 ## |
|
88 ## @example |
|
89 ## errorbar(@var{x}, @var{y1}, @var{ey}, "~", @var{x}, @var{y2}, @var{ly}, @var{uy}) |
|
90 ## @end example |
|
91 ## |
|
92 ## Two yerrorbar plots with @var{y1} and @var{y2} versus @var{x}. |
|
93 ## Errorbars for @var{y1} are drawn from @var{y1}-@var{ey} to |
|
94 ## @var{y1}+@var{ey}, errorbars for @var{y2} from @var{y2}-@var{ly} to |
|
95 ## @var{y2}+@var{uy}. |
|
96 ## |
|
97 ## @example |
|
98 ## errorbar(@var{x}, @var{y}, @var{lx}, @var{ux}, @var{ly}, @var{uy}, "~>") |
|
99 ## @end example |
|
100 ## |
|
101 ## xyerrorbar plot of @var{y} versus @var{x} where @var{x} errorbars |
|
102 ## are drawn from @var{x}-@var{lx} to @var{x}+@var{ux} and @var{y} errorbars |
|
103 ## from @var{y}-@var{ly} to @var{y}+@var{uy}. |
|
104 ## |
|
105 ## @end deftypefn |
|
106 ## @seealso{semilogx, semilogy, loglog, polar, mesh, contour, __pltopt__, |
|
107 ## bar, stairs, gplot, gsplot, replot, xlabel, ylabel, and title} |
|
108 |
|
109 ## Created: 18.7.2000 |
|
110 ## Author: Teemu Ikonen <tpikonen@pcu.helsinki.fi> |
|
111 ## Keywords: errorbar, plotting |
|
112 |
3979
|
113 function errorbar (varargin) |
3718
|
114 |
|
115 if (nargin < 2) |
|
116 usage ("errorbar (...)"); |
|
117 endif |
|
118 |
|
119 save_hold = ishold; |
|
120 unwind_protect |
|
121 if (! ishold) |
|
122 clg () |
|
123 endif |
|
124 hold ("on"); |
3979
|
125 k = 1; |
3718
|
126 while (nargin) |
3979
|
127 a = varargin{k++}; |
3718
|
128 nargin--; |
|
129 if (is_vector (a)) |
|
130 a = a(:); |
|
131 elseif (is_matrix (a)); |
|
132 ; |
|
133 else |
|
134 usage ("errorbar (...)"); |
|
135 endif |
|
136 sz = size (a); |
|
137 ndata = 1; |
|
138 arg1 = a; |
|
139 fmt = " "; |
|
140 while (nargin) |
|
141 nargin--; |
3979
|
142 a = varargin{k++}; |
3718
|
143 if (isstr (a)) |
|
144 fmt = a; |
|
145 cmd = "__errplot__ (arg1"; |
|
146 for i = 2:ndata, |
|
147 cmd = [cmd, sprintf(", arg%d",i)]; |
|
148 endfor |
|
149 cmd = [cmd, ", fmt);"]; |
|
150 eval (cmd); |
|
151 break; |
|
152 elseif (is_vector (a)) |
|
153 a = a(:); |
|
154 elseif (is_matrix (a)) |
|
155 ; |
|
156 else |
|
157 error ("wrong argument types"); |
|
158 endif |
|
159 if (size (a) != sz) |
|
160 error ("argument sizes do not match"); |
|
161 endif |
|
162 ndata++; |
|
163 eval (sprintf ("arg%d = a;", ndata)); |
|
164 if (ndata > 6) |
|
165 error ("too many arguments to a plot"); |
|
166 endif |
|
167 endwhile |
|
168 endwhile |
|
169 |
|
170 if (! isstr (a)) |
|
171 fmt = " "; |
|
172 cmd = "__errplot__(arg1"; |
|
173 for i = 2:ndata, |
|
174 cmd = [cmd, sprintf(", arg%d",i)]; |
|
175 endfor |
|
176 cmd = [cmd, ", fmt);"]; |
|
177 eval (cmd); |
|
178 endif |
|
179 unwind_protect_cleanup |
|
180 if (! save_hold) |
|
181 hold ("off"); |
|
182 endif |
|
183 end_unwind_protect |
|
184 |
|
185 endfunction |