Mercurial > hg > octave-nkf
annotate scripts/time/datetick.m @ 15063:36cbcc37fdb8
Refactor configure.ac to make it more understandable.
Use common syntax for messages in config.h
Correct typos, refer to libraries in all caps, use two spaces after period.
Follow Autoconf guidelines and place general tests before specific tests.
* configure.ac, m4/acinclude.m4: Use common syntax for messages in config.h
Correct typos, refer to libraries in all caps, use two spaces after period.
Follow Autoconf guidelines and place general tests before specific tests.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 31 Jul 2012 10:28:51 -0700 |
parents | 460a3c6d8bf1 |
children | 8899c785cc99 |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
13082
diff
changeset
|
1 ## Copyright (C) 2008-2012 David Bateman |
8112 | 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 3 of the License, or (at | |
8 ## your option) 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, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
19 ## -*- texinfo -*- | |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10369
diff
changeset
|
20 ## @deftypefn {Function File} {} datetick () |
10151
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
21 ## @deftypefnx {Function File} {} datetick (@var{form}) |
8112 | 22 ## @deftypefnx {Function File} {} datetick (@var{axis}, @var{form}) |
23 ## @deftypefnx {Function File} {} datetick (@dots{}, "keeplimits") | |
24 ## @deftypefnx {Function File} {} datetick (@dots{}, "keepticks") | |
25 ## @deftypefnx {Function File} {} datetick (@dots{ax}, @dots{}) | |
12575
d0b799dafede
Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
26 ## Add date formatted tick labels to an axis. The axis the apply the |
8112 | 27 ## ticks to is determined by @var{axis} that can take the values "x", |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8325
diff
changeset
|
28 ## "y" or "z". The default value is "x". The formatting of the labels is |
8112 | 29 ## determined by the variable @var{form}, that can either be a string in |
30 ## the format needed by @code{dateform}, or a positive integer that can | |
31 ## be accepted by @code{datestr}. | |
32 ## @seealso{datenum, datestr} | |
33 ## @end deftypefn | |
34 | |
35 function datetick (varargin) | |
36 | |
37 [h, varargin, nargin] = __plt_get_axis_arg__ ("datetick", varargin{:}); | |
38 | |
10151
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
39 oldh = gca (); |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
40 unwind_protect |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
41 axes (h); |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
42 __datetick__ (varargin{:}); |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
43 unwind_protect_cleanup |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
44 axes (oldh); |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
45 end_unwind_protect |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
46 |
8112 | 47 endfunction |
48 | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
49 |
8112 | 50 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
51 %! clf; |
8112 | 52 %! yr = 1900:10:2000; |
53 %! pop = [76.094, 92.407, 106.461, 123.077 131.954, 151.868, 179.979, ... | |
54 %! 203.984, 227.225, 249.623, 282.224]; | |
55 %! plot (datenum (yr, 1, 1), pop); | |
56 %! title ("US population (millions)"); | |
57 %! xlabel ("Year"); | |
58 %! datetick ("x", "YYYY"); | |
59 | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
60 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
61 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
62 %! yr = 1988:2:2002; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
63 %! yr = datenum (yr,1,1); |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
64 %! pr = [12.1 13.3 12.6 13.1 13.3 14.1 14.4 15.2]; |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
65 %! plot (yr, pr); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
66 %! xlabel ("year"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
67 %! ylabel ("average price"); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14237
diff
changeset
|
68 %! ax = gca; |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
69 %! set (ax, "xtick", datenum (1990:5:2005,1,1)); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
70 %! datetick (2, "keepticks"); |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
71 %! set (ax, "ytick", 12:16); |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
72 |
13082
35c0b722d2e4
codesprint: mark datetick as tested.
John W. Eaton <jwe@octave.org>
parents:
12575
diff
changeset
|
73 ## Remove from test statistics. No real tests possible. |
35c0b722d2e4
codesprint: mark datetick as tested.
John W. Eaton <jwe@octave.org>
parents:
12575
diff
changeset
|
74 %!assert (1) |
35c0b722d2e4
codesprint: mark datetick as tested.
John W. Eaton <jwe@octave.org>
parents:
12575
diff
changeset
|
75 |
8112 | 76 function __datetick__ (varargin) |
77 | |
78 keeplimits = false; | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
79 keepticks = false; |
8112 | 80 idx = []; |
81 for i = 1 : nargin | |
82 arg = varargin {i}; | |
83 if (ischar (arg)) | |
84 if (strcmpi (arg, "keeplimits")) | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
85 keeplimits = true; |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
86 idx = [idx, i]; |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
87 elseif (strcmpi (arg, "keepticks")) |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
88 keepticks = true; |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
89 idx = [idx, i]; |
8112 | 90 endif |
91 endif | |
92 endfor | |
93 | |
94 varargin(idx) = []; | |
95 nargin = length (varargin); | |
96 form = []; | |
97 ax = "x"; | |
98 | |
99 if (nargin != 0) | |
100 arg = varargin{1}; | |
11149
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10793
diff
changeset
|
101 if (ischar (arg) && (strcmp (arg, "x") || strcmp (arg, "y") |
fe3c3dfc07eb
style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents:
10793
diff
changeset
|
102 || strcmp (arg, "z"))) |
8112 | 103 ax = arg; |
104 if (nargin > 1) | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
105 form = varargin{2}; |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
106 varargin(1:2) = []; |
8112 | 107 else |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
108 varargin(1) = []; |
8112 | 109 endif |
110 else | |
111 form = arg; | |
112 varargin(1) = []; | |
113 endif | |
114 endif | |
115 | |
116 ## Don't publish the existence of this variable for use with dateaxis | |
117 if (length (varargin) > 0) | |
118 startdate = varargin{1}; | |
119 else | |
120 startdate = []; | |
121 endif | |
122 | |
10151
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
123 if (! isempty (form)) |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
124 if (isnumeric (form)) |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
125 if (! isscalar (form) || floor (form) != form || form < 0) |
11472
1740012184f9
Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents:
11294
diff
changeset
|
126 error ("datetick: expecting FORM argument to be a positive integer"); |
10151
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
127 endif |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
128 elseif (! ischar (form)) |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
129 error ("datetick: expecting valid date format string"); |
8112 | 130 endif |
131 endif | |
132 | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
133 if (keepticks) |
11294
e2a4f3478b7c
datetick.m: add missing semicolon
John W. Eaton <jwe@octave.org>
parents:
11149
diff
changeset
|
134 ticks = get (gca (), strcat (ax, "tick")); |
8112 | 135 else |
136 ## Need to do our own axis tick position calculation as | |
137 ## year, etc, don't fallback on nice datenum values. | |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
138 objs = findall (gca ()); |
8112 | 139 xmax = NaN; |
140 xmin = NaN; | |
141 for i = 1 : length (objs) | |
142 fld = get (objs (i)); | |
143 if (isfield (fld, strcat (ax, "data"))) | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
144 xdata = getfield (fld, strcat (ax, "data"))(:); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
145 xmin = min (xmin, min (xdata)); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
146 xmax = max (xmax, max (xdata)); |
8112 | 147 endif |
148 endfor | |
149 | |
150 if (isnan (xmin) || isnan (xmax)) | |
151 xmin = 0; | |
152 xmax = 1; | |
153 elseif (xmin == xmax) | |
154 xmax = xmin + 1; | |
155 endif | |
156 | |
157 N = 3; | |
158 if (xmax - xmin < N) | |
159 ## Day scale or less | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
160 if (xmax - xmin < N / 24 / 60 / 60) |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
161 scl = 1 / 24 / 60 / 60; |
14665
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14552
diff
changeset
|
162 elseif (xmax - xmin < N / 24 / 60) |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
163 scl = 1 / 24 / 60; |
8112 | 164 else |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
165 scl = 1 / 24; |
8112 | 166 endif |
167 sep = __calc_tick_sep__ (xmin / scl , xmax / scl); | |
168 xmin = sep * floor (xmin / scl / sep); | |
169 xmax = sep * ceil (xmax / scl / sep); | |
170 nticks = (xmax - xmin) / sep + 1; | |
171 xmin *= scl; | |
172 xmax *= scl; | |
173 else | |
174 [ymin, mmin, dmin] = datevec (xmin); | |
175 [ymax, mmax, dmax] = datevec (xmax); | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
176 minyear = ymin + (mmin - 1) / 12 + (dmin - 1) / 12 / 30; |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
177 maxyear = ymax + (mmax - 1) / 12 + (dmax - 1) / 12 / 30; |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
178 minmonth = mmin + (dmin - 1) / 30; |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
179 maxmonth = (ymax - ymin) * 12 + mmax + (dmax - 1) / 30; |
8112 | 180 |
181 if (maxmonth - minmonth < N) | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
182 sep = __calc_tick_sep__ (xmin, xmax); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
183 xmin = sep * floor (xmin / sep); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
184 xmax = sep * ceil (xmax / sep); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
185 nticks = (xmax - xmin) / sep + 1; |
8112 | 186 elseif (maxyear - minyear < N) |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
187 sep = __calc_tick_sep__ (minmonth , maxmonth); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
188 xmin = datenum (ymin, sep * floor (minmonth / sep), 1); |
14665
4f458e882516
Allow fractional months to datenum and correct a couple of typos in datetick (bug #36482)
David Bateman <dbateman@free.fr>
parents:
14552
diff
changeset
|
189 xmax = datenum (ymax, sep * ceil (maxmonth / sep), 1); |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
190 nticks = ceil (maxmonth / sep) - floor (minmonth / sep) + 1; |
8112 | 191 else |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
192 sep = __calc_tick_sep__ (minyear , maxyear); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
193 xmin = datenum (sep * floor (minyear / sep), 1, 1); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
194 xmax = datenum (sep * ceil (maxyear / sep), 1, 1); |
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
195 nticks = ceil (maxyear / sep) - floor (minyear / sep) + 1; |
8112 | 196 endif |
197 endif | |
198 ticks = xmin + [0 : nticks - 1] / (nticks - 1) * (xmax - xmin); | |
199 endif | |
200 | |
201 if (isempty (form)) | |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14363
diff
changeset
|
202 r = max (ticks) - min (ticks); |
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14363
diff
changeset
|
203 if (r < 10/60/24) |
8112 | 204 ## minutes and seconds |
205 form = 13; | |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14363
diff
changeset
|
206 elseif (r < 2) |
8112 | 207 ## hours |
208 form = 15; | |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14363
diff
changeset
|
209 elseif (r < 15) |
8112 | 210 ## days |
211 form = 8; | |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14363
diff
changeset
|
212 elseif (r < 365) |
10151
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
213 ## FIXME -- FORM should be 19 for European users who use dd/mm |
c2f1cdb59821
datetick: make form argument optional
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
214 ## instead of mm/dd. How can that be determined automatically? |
8112 | 215 ## months |
216 form = 6; | |
14552
86854d032a37
maint: miscellaneous style fixes for .m files
John W. Eaton <jwe@octave.org>
parents:
14363
diff
changeset
|
217 elseif (r < 90*12) |
8112 | 218 ## quarters |
219 form = 27; | |
220 else | |
221 ## years | |
222 form = 10; | |
223 endif | |
224 endif | |
225 | |
226 if (length (ticks) == 6) | |
227 ## Careful that its not treated as a datevec | |
228 if (! isempty (startdate)) | |
229 sticks = strvcat (datestr (ticks(1:end-1) - ticks(1) + startdate, form), | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
230 datestr (ticks(end) - ticks(1) + startdate, form)); |
8112 | 231 else |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
232 sticks = strvcat (datestr (ticks(1:end-1), form), |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
233 datestr (ticks(end), form)); |
8112 | 234 endif |
235 else | |
236 if (! isempty (startdate)) | |
237 sticks = datestr (ticks - ticks(1) + startdate, form); | |
238 else | |
239 sticks = datestr (ticks, form); | |
240 endif | |
241 endif | |
242 | |
243 sticks = mat2cell (sticks, ones (rows (sticks), 1), columns (sticks)); | |
244 | |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
245 if (keepticks) |
8112 | 246 if (keeplimits) |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
247 set (gca (), strcat (ax, "ticklabel"), sticks); |
8112 | 248 else |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
249 set (gca (), strcat (ax, "ticklabel"), sticks, strcat (ax, "lim"), |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
250 [min(ticks), max(ticks)]); |
8112 | 251 endif |
252 else | |
253 if (keeplimits) | |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
254 set (gca (), strcat (ax, "tick"), ticks, strcat (ax, "ticklabel"), sticks); |
8112 | 255 else |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14665
diff
changeset
|
256 set (gca (), strcat (ax, "tick"), ticks, strcat (ax, "ticklabel"), sticks, |
10369
3516a245d607
datetick.m: Fix 'keepticks' bug, and untabify.
Ben Abbott <bpabbott@mac.com>
parents:
10151
diff
changeset
|
257 strcat (ax, "lim"), [min(ticks), max(ticks)]); |
8112 | 258 endif |
259 endif | |
260 endfunction | |
261 | |
262 function [a, b] = __magform__ (x) | |
263 if (x == 0) | |
264 a = 0; | |
265 b = 0; | |
266 else | |
267 l = log10 (abs (x)); | |
268 r = fmod (l, 1); | |
269 a = 10 .^ r; | |
270 b = fix (l - r); | |
271 if (a < 1) | |
272 a *= 10; | |
273 b -= 1; | |
274 endif | |
275 if (x < 0) | |
276 a = -a; | |
277 endif | |
278 endif | |
279 endfunction | |
280 | |
281 ## A translation from Tom Holoryd's python code at | |
282 ## http://kurage.nimh.nih.gov/tomh/tics.py | |
283 function sep = __calc_tick_sep__ (lo, hi) | |
284 persistent sqrt_2 = sqrt (2.0); | |
285 persistent sqrt_10 = sqrt (10.0); | |
286 persistent sqrt_50 = sqrt (50.0); | |
287 | |
288 ticint = 5; | |
289 | |
290 ## Reference: Lewart, C. R., "Algorithms SCALE1, SCALE2, and | |
291 ## SCALE3 for Determination of Scales on Computer Generated | |
292 ## Plots", Communications of the ACM, 10 (1973), 639-640. | |
293 ## Also cited as ACM Algorithm 463. | |
294 | |
295 [a, b] = __magform__ ((hi - lo) / ticint); | |
296 | |
297 if (a < sqrt_2) | |
298 x = 1; | |
299 elseif (a < sqrt_10) | |
300 x = 2; | |
301 elseif (a < sqrt_50) | |
302 x = 5; | |
303 else | |
304 x = 10; | |
305 endif | |
306 sep = x * 10 .^ b; | |
307 endfunction | |
308 |