Get Colormap Values Corresponding to Array Values
126 次查看(过去 30 天)
显示 更早的评论
Dear Matlab Community,
Currently I am trying to visualize neuroimaging data and have thus run into the following problem:
I have an array of 1990 values, which I want to plot in different colors on a continuous colorbar. So all I would require is the information on how I can get a matrix with RGB triplets corresponding to the data in my array. I have already tried the following:
c = jet(cvals)
Which yields in the following code:
Error using /
Matrix dimensions must agree.
Error in jet (line 23)
u = [(1:1:n)/n ones(1,n-1) (n:-1:1)/n]';
Any help would be greatly appreciated.
Thank you!
2 个评论
采纳的回答
Chunru
2021-8-13
% rand cvars
cvars = randi([10 450], [128, 1]);
% You need to specify the number of colors to represent these cvars
n = 512;
cmap = jet(n);
% cvars has a different range from cmap range (1:512), so you have to map
% it. (similar to imagesc)
cvars_map = (cvars - min(cvars))/(max(cvars)-min(cvars)) * (n-1) + 1;
% Now find the color of i-th cvars
i = 10;
cvars(i)
cvars_map(i) % mapped cvars
cmap(cvars_map(i), :) % corresponding color
3 个评论
Chunru
2021-8-13
cvars is considered continuous (the code above just use the min and max of cvars). This continous values are then divided into n intervals. Each interval is then mapped into 1 of the n colors.
If you only have 70 unique values, then they correspond to 70 unique colors (out of n=512) colors. Some other colors will not really used.
If you do want to have each unique value correspond to a color, it can be also down. But you need to specify which color map you want to use.
更多回答(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!