📄 plotsym.m
字号:
function plotsym(x,y,a3,a4,a5,a6,a7)%PLOTSYM Plot with symbols%% plotsym(x,y,S)% plotsym(x,y,s,S,c,C,symsize)%% Input S is one of the following%% 's' square % 'd' diamond% 't' triangle% 'i' inverted triangle% 'l' left triangle% 'r' right triangle% 'c' circle% % In the longer call s is vector that contains category marker that% is plotted with symbol from text string S, i.e element i is % plotted with symbol S(s(i)), c is vector for colormarking, and% C is corresponding string of 'rgbcymwk' in permuted order. If C% is omitted then c is taken as a colour in itself. The colors% may then be changed by calling colormap. The input symsize % defines the symbol size relative to the default size which is 1.% It may be a scalar, which is then applied to all symbols, or a % vector, one for each symbol. Examples:%% plotsym(x,y,z,'st','rb')% Points x,y are plotted with red squares (z=1) or blue% triangles (z=2).%% plotsym(x,y,'s',z,2)% Points x,y are plotted with squares of twice the standard % size, filled with colors according to value in z and current % colormap.%% Note: in Matlab 5.x the built in plot function now has similar% functionality.%% See also PLOT and COLORMAPx = x(:);y = y(:);n = length(x);symbol = ones(n,1);symboltable = 'stcidlr';color = [];colortable = [];symsize = ones(n,1);s1 = 1; s2 = 1;for i=3:nargin v = eval(['a',num2str(i)]); if isstr(v) if s1 == 1 symboltable = v; s1 = 2; s2 = 2; else colortable = v; s2 = 3; end else if s2 == 1 symbol = v; s2 = 2; elseif s2 == 2 color = v; s2 = 3; else symsize = v; end endendif isempty(color) if isempty(colortable) colortable = 'rbgcmywk'; end color = colortable(rem(symbol-1,length(colortable))+1); color = color(:);elseif ~isempty(colortable) color = colortable(color);elseif length(color) < length(x) color = color(symbol);endsymbol = symboltable(symbol);if length(symsize) == 1 symsize = symsize(ones(n,1));endif ~ishold cla reset sx = max(x)-min(x); sy = max(y)-min(y);else a = axis; sx = max([a(2);x])-min([a(1);x]); sy = max([a(4);y])-min([a(3);y]);endP = get(gca,'Position');P = P(3)/P(4);dx = sx/25/P/1.3;dy = sy/25;Ss = [-1 1 1 -1; -1 -1 1 1]/4;Ds = [-1 0 1 0; 0 -1 0 1]/2/sqrt(2);Ts = [-sqrt(3)/2 0 sqrt(3)/2; 0.5 -1 0.5]/sqrt(3)/1.5;Is = [-sqrt(3)/2 0 sqrt(3)/2; -0.5 1 -0.5]/sqrt(3)/1.5;Ls = [0.5 -1 0.5; -sqrt(3)/2 0 sqrt(3)/2]/sqrt(3)/1.5;Rs = [-0.5 1 -0.5; -sqrt(3)/2 0 sqrt(3)/2]/sqrt(3)/1.5;Cs = [sin(pi*(0:31)/16); cos(pi*(0:31)/16)]/pi;for i=1:n si = symbol(i); if si == 's', sym = Ss; elseif si == 'd', sym = Ds; elseif si == 't', sym = Ts; elseif si == 'i', sym = Is; elseif si == 'l', sym = Ls; elseif si == 'r', sym = Rs; elseif si == 'c', sym = Cs; end p = patch(x(i)+dx*symsize(i)*sym(1,:),y(i)+dy*symsize(i)*sym(2,:),color(i)); % set(p,'EdgeColor',[1 1 1]); % Uncomment for Matlab 4.xendset(gca,'Box','on');grid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -