function [h] = gscatter(x,y,group,clr,sym,siz,doleg,xname,yname)
% GSCATTER scatter plot of groups 
%
%  gscatter(x,y,group)
%  gscatter(x,y,group,clr,sym,siz)
%  gscatter(x,y,group,clr,sym,siz,doleg)
%  gscatter(x,y,group,clr,sym,siz,doleg,xname,yname)
%  h = gscatter(...) 
%
%  x,y, group: 	vectors with equal length 
%  clf: 	color vector, default 'bgrcmyk'
%  sym:		symbol, default '.'
%  siz: 	size of Marker
%  doleg:  'on' (default) shows legend, 'off' turns of legend 
%  xname, yname: name of axis
%
%
% see also: ecdf, cdfplot
%
% References: 

%	$Id$
%	Copyright (C) 2009 by Alois Schloegl <alois.schloegl@gmail.com>
%       This function is part of the NaN-toolbox
%       http://pub.ist.ac.at/~schloegl/matlab/NaN/

% This program is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License
% as published by the Free Software Foundation; either version 3
% of the  License, or (at your option) any later version.
% 
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
% 
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.

[b,i,j] = unique(group); 

if nargin<3
	help gscatter; 
	error('invalid number of arguments;')
end;
if nargin<4
	clr = [];
end
if nargin<5
	sym = [];
end
if nargin<6
	siz = [];
end
if nargin<7
	doleg = [];
end
if nargin<8
	xname = [];
end
if nargin<9
	yname = [];
end; 
if isempty(clr), clr='bgrcmyk'; end; 
if isempty(sym), sym='.'; end; 
if isempty(doleg), doleg='on'; end; 

for k=1:length(b);
	%ix = find(k==j);
	c = clr(mod(k-1,length(clr))+1); 
	s = sym(mod(k-1,length(sym))+1); 
	hh(k) = plot(x(k==j),y(k==j),[c,s]);
	if ~isempty(siz)	
		z = siz(mod(k-1,length(siz))+1); 
		set(hh(k),'MarkerSize',z);
	end	
	hold on; 
end; 
hold off; 

if ~strcmpi(doleg,'off')
	if isnumeric(b)
		b=num2str(b(:));
	end;	
	legend(b);
end;
if ~isempty(xname)
	xlabel(xname); 
end; 
if ~isempty(yname)
	ylabel(yname); 
end; 
	
if nargout>0,
	h = hh; 
end;

