annotate graphics/scatc.m @ 61:eff6bddf82e3 tip

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