Get Colormap Values Corresponding to Array Values

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 件のコメント

Yazan
Yazan 2021 年 8 月 13 日
What version of Matlab do you have? When run on 2021a, no errors were received.
Hannah_Mad
Hannah_Mad 2021 年 8 月 13 日
I run R2021 a

サインインしてコメントする。

 採用された回答

Chunru
Chunru 2021 年 8 月 13 日

0 投票

% 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)
ans = 136
cvars_map(i) % mapped cvars
ans = 147
cmap(cvars_map(i), :) % corresponding color
ans = 1×3
0 0.6484 1.0000

3 件のコメント

Hannah_Mad
Hannah_Mad 2021 年 8 月 13 日
Thank you for your quick reply. Unfortunately I forgot to mention that, while my array is 1990 x 1, it only has 70 unique values. That means, I only need 70 colors - right? So how do I match my 70 colors to the 1990 values that it corresponds to?
Thank you
Chunru
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.
Hannah_Mad
Hannah_Mad 2021 年 8 月 13 日
Thank you very much! It works. Just one last question: if I have outliers (i.e. values are between 1 - 35) and one value is much higher (i.e. 70) is there any way I can change the colormap's limits? I only found caxis, but I do not think that it'll do the job here.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

タグ

質問済み:

2021 年 8 月 13 日

コメント済み:

2021 年 8 月 13 日

Community Treasure Hunt

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

Start Hunting!

Translated by