forked from cultpenguin/mGstat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplot_scale.m
104 lines (83 loc) · 1.92 KB
/
plot_scale.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
% plot_scale : plot scale to figure
%
% Call:
% plot_scale(ax,len,pos,FontSize)
%
% ax: axis (gca)
% len [1,2]: length of scale length in each direction
% pos [1],[2],[3] or [4]: Position of scale plot.
% [NW],[SW],[NE],[SE]
%
%
% Example
% imagesc(peaks);
% hold on;
% plot_scale(gca,[15 15],3);
% hold off;
% axis image
%
%
function plot_scale(ax,len,pos,FS)
if nargin==1
end
if nargin<4
FS=6;
end
if nargin<3
pos=3;
end
dc=0.05;
if nargin==0
ax=gca;
end
Xlim = get(ax,'Xlim');
Ylim = get(ax,'Ylim');
Zlim = get(ax,'Zlim');
dx=abs(diff(Xlim));
dy=abs(diff(Ylim));
dz=abs(diff(Zlim));
if nargin<2
lx=0.1;
ly=0.1;
lz=0.1;
lenx=lx*dx;
leny=ly*dy;
lenz=lz*dz;
else
if length(len)==1, len(2)=len(1); end
lenx=len(1);
leny=len(2);
% lenz=len(3);
lx=lenx/dx;
ly=leny/dy;
end
if pos==1
xc=dc;
yc=dc;
zc=dc;
elseif pos==2
xc=dc;
yc=1-dc-ly;
zc=dc;
elseif pos==3
xc=1-dc-lx;
yc=dc;
zc=dc;
else
xc=1-dc-lx;
yc=1-dc-ly;
zc=dc;
end
% X-scale
plot([Xlim(1)+xc*dx Xlim(1)+(xc+lx)*dx],[1 1].*(Ylim(1)+yc*dy),'k-')
tx=text([Xlim(1)+xc*dx]+dx*lx/2,(Ylim(1)+yc*dy),num2str(lenx));
set(tx,'HorizontalAlignment','Center')
set(tx,'VerticalAlignment','Top')
set(tx,'FontSize',FS,'FontName','Arial')
% Y-scale
plot([1 1].*(Xlim(1)+xc*dx),[Ylim(1)+yc*dy Ylim(1)+(yc+ly)*dy],'k-')
ty=text([Xlim(1)+xc*dx],(Ylim(1)+yc*dy)+dy*ly/2,num2str(leny));
set(ty,'HorizontalAlignment','Center')
set(ty,'VerticalAlignment','Bottom')
set(ty,'FontSize',FS,'FontName','Arial')
set(ty,'Rotation',90)