samer@0
|
1 function h=scatc(x,C,S,varargin)
|
samer@0
|
2 % scatc - 2 or 3D scatter plot with colours and sizes
|
samer@0
|
3 %
|
samer@0
|
4 % scatc :: [[N,E]] ~'N points in E space', [[N]]~'colours' -> handle.
|
samer@0
|
5 % scatc ::
|
samer@0
|
6 % [[N,E]] ~'N points in E space',
|
samer@0
|
7 % [[N]] ~'colours',
|
samer@0
|
8 % [[N]] | real ~'array of sizes or single marker size'
|
samer@0
|
9 % -> handle.
|
samer@0
|
10 %
|
samer@0
|
11 % If E<3, does 2D scatter, otherwise, does 3D scatter plot.
|
samer@0
|
12 % Draws filled circles.
|
samer@0
|
13
|
samer@0
|
14 if size(x,2)<=4 && size(x,1)>4, x=x'; end
|
samer@0
|
15 if nargin<3 || isempty(S),
|
samer@0
|
16 % use default marker size
|
samer@0
|
17 S=get(gca,'DefaultLineMarkerSize').^2;
|
samer@0
|
18 elseif length(S)==1,
|
samer@0
|
19 S=S*ones(size(x,2),1);
|
samer@0
|
20 end
|
samer@0
|
21
|
samer@0
|
22 if size(x,1)<3,
|
samer@0
|
23 h=scatter(x(1,:),x(2,:),S,C);
|
samer@0
|
24 else
|
samer@0
|
25 h=scatter3(x(1,:),x(2,:),x(3,:),S,C);
|
samer@0
|
26 end
|
samer@0
|
27
|
samer@0
|
28 set(h, ...
|
samer@0
|
29 'MarkerFaceColor','flat', ...
|
samer@0
|
30 'MarkerEdgeColor','k', ...
|
samer@0
|
31 'LineWidth',0.2, ...
|
samer@0
|
32 varargin{:});
|
samer@0
|
33
|
samer@0
|
34 axis equal;
|
samer@0
|
35 if size(x,1)>2
|
samer@0
|
36 axis vis3d;
|
samer@0
|
37 axis off;
|
samer@0
|
38 set(gca,'DrawMode','fast');
|
samer@0
|
39 set(gca,'Projection','perspective');
|
samer@0
|
40 else
|
samer@0
|
41 box on;
|
samer@0
|
42 % axis off;
|
samer@0
|
43 end
|