Code covered by the BSD License  

Highlights from
Estimating the number of clusters via System Evolution

from Estimating the number of clusters via System Evolution by Kaijun Wang
estimate number of clusters for far clusters, small-larger clusters, slightly overlapping clusters

plot_evolution_route(data,labels,ters,g1,g2,km,nCluster,newp,subp,pcolor)
function plot_evolution_route(data,labels,ters,g1,g2,km,nCluster,newp,subp,pcolor)

k_opt = km(1);
ko = km(1);
if length(km) > 1
   ko = km(2);
end
fprintf('\n # # Number of clusters estimated by sysEvolution k_opt = %d\n', k_opt);
plotindice(ters(:,1:g2),g1,g2,km,newp,subp,pcolor);
if k_opt > ko
  title('Circle symbol indicates slightly overlapping between twin-clusters'); 
else
  title('Energy difference by square symbol indicates net border distances between clusters');
end

g=nCluster(k_opt);
fprintf('\n ==  minimal number of elements in one of twin-clusters: %d\n',g);
if km(1) > 1 && g < 16
   dim = size(data,2);
   figure;  plotdata_bylabels(data,labels(:,k_opt),dim>2,subp,'co');%'nb'
   title('a cluster has fewer elements (different colours --- different classes)');
end

disp(' == In figures, Square symbol indicates a net border distance and'); 
disp('  Circle symbol indicates slightly overlapping between twin-clusters');
disp('  ')

Contact us at files@mathworks.com