Azzera filtri
Azzera filtri

Get Colormap Values Corresponding to Array Values

126 visualizzazioni (ultimi 30 giorni)
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 Commenti
Yazan
Yazan il 13 Ago 2021
What version of Matlab do you have? When run on 2021a, no errors were received.

Accedi per commentare.

Risposta accettata

Chunru
Chunru il 13 Ago 2021
% 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 Commenti
Chunru
Chunru il 13 Ago 2021
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 il 13 Ago 2021
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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Colormaps in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by