-
Notifications
You must be signed in to change notification settings - Fork 5
/
minimalticks.m
46 lines (38 loc) · 1.18 KB
/
minimalticks.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
% set the ticks along a given axdir (default y) to a minimal set in axis ax
% (default gxa). We will set ticks for the values at the min/max and a
% scalar specialvalue if present (default 0). Supports multiple axis
% inputs and multiple directions (i.e., axdir='xy'). If precision is
% undefined we find a precision based on the axis.
%
% minimalticks(ax,axdir,specialvalue,precision)
function minimalticks(ax,axdir,specialvalue,precision)
if ieNotDefined('ax')
ax = gca;
end
if ieNotDefined('axdir')
axdir = 'y';
end
if ieNotDefined('specialvalue')
specialvalue = 0;
end
if ieNotDefined('precision')
precision = [];
end
for thisax = ax(:)'
for thisdir = axdir(:)'
lim = get(thisax,[thisdir 'lim']);
v = lim;
if specialvalue>lim(1) && specialvalue<lim(2)
v = [v(1) specialvalue v(2)];
end
thisprec = precision;
if isempty(thisprec)
thisprec = findprecision(v);
end
set(thisax,[thisdir 'lim'],lim,[thisdir 'tick'],v);
if ~isinf(precision)
vstr = mat2strcell(v,['%.' num2str(thisprec,'%.0f') 'f']);
set(thisax,[thisdir 'ticklabel'],vstr);
end
end
end