# How to create a cyclic color palette

20 views (last 30 days)
Guy Nir on 4 Apr 2024
Commented: DGM on 4 Apr 2024
How do I create a cyclic rainbow color palette?

Ayush Anand on 4 Apr 2024
Hi,
You can use the "hsv" function to create a cyclic rainbow color palette, as the HSV color space is naturally cyclic with respect to hue.
% Number of colors you want in the palette
numColors = 256;
% Generate a cyclic rainbow color palette
rainbowPalette = hsv(numColors);
% Example: Use the palette for a plot
x = linspace(0, 2*pi, 1000);
y = sin(x);
scatter(x, y, 10, mod(1:1000, numColors)+1, 'filled');
colormap(rainbowPalette);
colorbar;
In this example, "hsv(numColors)" generates a "numColors x 3" matrix, where each row is an RGB color corresponding to a color in the HSV color wheel. The colors range from red, through all the hues of the rainbow, back to red, creating a cycle.
Hope this helps!
Guy Nir on 4 Apr 2024
I see. I think that ideally the function will take a map similiar to the one with 40 colors and rescale it with let's say, 20 colors, thus keeping the obvious cyclic nature of the map.
DGM on 4 Apr 2024
If you want to always ensure that the ends are the same color regardless of the length of the map, you can just append that tuple.
ncolors = 9;
CT = hsv(ncolors);
CT = CT([1:end 1],:);
image(permute(CT,[1 3 2]))
set(gca,'ydir','normal')
... of course this makes anything you do with the map ambiguous, since the same color maps to two distinct values.
Despite casual appearances, it's also no longer cyclic, since it has a duplicate red element.
image(permute([CT;CT],[1 3 2]))
set(gca,'ydir','normal')
This is something that might be more justifiable with a really long colormap, but for a short discrete color table, I don't think it makes sense.

### Categories

Find more on Colormaps in Help Center and File Exchange

R2023b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!