How to create a cyclic color palette
31 次查看(过去 30 天)
显示 更早的评论
How do I create a cyclic rainbow color palette?
0 个评论
采纳的回答
Ayush Anand
2024-4-4
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.
You can read more about the "hsv" function here: https://www.mathworks.com/help/matlab/ref/hsv.html
Hope this helps!
4 个评论
DGM
2024-4-4
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Colormaps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!