Colormap- specific values for each heatmap value
古いコメントを表示
Hey, I am currently struggeling with plotting different colors for different value ranges in a heatmap.
So I have a specific number of values in Data and want to plot all values below 0.01 in one color, values between 0.01 and 0.06 in a different color and so on. clim does not work, since it interpolates between the upper and lower value and i do not have only 2 limits.
I thought maybe, if I only give n-many colorcodes in the colormap for n-numbers in data it might work, but it does not.
Maybe you have a suggestion.
Thanks a lot !
%finds the amount of values below 0.01, between 0.01 and 0.06, between 0.06
%and 0.14 and larger than 0.14 in Data
noEffect = numel(find(Data < 0.01));
smallEffect = numel(find(Data < 0.06)) - numel(find(Data <= 0.01));
mediumEffect = numel(find(Data < 0.14)) - numel(find(Data <= 0.06));
largeEffect = numel(find(Data >= 0.14));
% creates a colormap depending on the number of
% no/small/medium/large effects
cmap = [];
cmap(1:noEffect,1:3) = 1;
cmap(end+1:end + smallEffect,1:2) = 0.6;
cmap(end+1 - smallEffect:end ,3) = 0.6;
cmap(end+1:end + mediumEffect,1) = 0.7;
cmap(end+1 - mediumEffect : end ,2) = 0.7;
cmap(end+1 - mediumEffect : end ,3) = 0.7;
cmap(end+1:end + largeEffect,1) = 0.6941;
cmap(end+1 - largeEffect : end ,2) = 0.6353;
cmap(end+1 - largeEffect : end,3) = 0.7922;
%plots heatmap with cmap as colormap
h=heatmap(Data);
h.Colormap = cmap;
採用された回答
その他の回答 (1 件)
You might try something like this:
% some fake data
z = 0.2*rand(10);
% define parameters of new CT
ctlength = 256;
cbreaks = [0 0.01 0.06 0.15 max(z(:))];
basecolors = parula(4); % or any Mx3 CT that matches length of cbreaks
% construct a discrete CT
idxbreaks = round(1 + (ctlength-1)*cbreaks/cbreaks(end));
blocklen = diff(idxbreaks);
blocklen(end) = blocklen(end)+1;
CT = repelem(basecolors,blocklen,1)
% use it
heatmap(z);
colormap(CT)
caxis([min(cbreaks) max(cbreaks)])
You might also want to adjust the colorbar ticks as needed.
カテゴリ
ヘルプ センター および File Exchange で Color and Styling についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



