Post date: May 9, 2012 2:10:34 AM
The trick here is to define color on the HSV space as it is more understandable. Here the saturation s and the shade v are fixed to 1, and the hue h is separated into n parts equally, each part with 360/n. Then the hsv is transformed back to rgb. the code can be found below:
function rgbList = generateColorList(n,option)N = n+1;h = linspace(0,1,N)'; % H componentss = ones(N,1); % S componentsv = ones(N,1); % V componenthsv = [h s v];hsv = hsv(1:end-1,:);rgbList = hsv2rgb(hsv);if nargin > 1 if strcmp(lower(option.order),'shuffle') augmentedIndex = [1:n; n:-1:1]; augmentedIndex = augmentedIndex(:); permutedIndex = augmentedIndex(1:n)'; rgbList = rgbList(permutedIndex,:); end if option.display == 1 figure; scatter(1:n,1:n,30,rgbList,'s','filled'); endendTo use it, run the command below:
colorList = generateColorList(NClass);