Setting the color of specific cells in a heatmap that contains two types of data
42 views (last 30 days)
Show older comments
Hi,
I created the array below in Excel, and it's perfect except that the color bar is ugly and not detailed enough.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/814184/image.png)
So I've been trying to recreate it in MATLAB using the heatmap function and this is what I produced so far.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/814189/image.png)
Which is almost perfect, but I need to set a separate colormap, or a separate condition for the p-value cells. I want only cells with p-value of less than 0.05 to be colored while the rest is just white or black.
Some help with this would be great.
Thanks a lot.
2 Comments
dpb
on 26 Nov 2021
Attach your code/data to create what you have as a starting point for those here..."help us help you"
Accepted Answer
DGM
on 26 Nov 2021
You can use NaN to indicate out-of-range data
h = rand(10,10);
h(h<0.1) = NaN;
hh = heatmap(h);
hh.MissingDataLabel = 'h < 0.1';
colormap(jet)
The color of the excluded cells can be set using the MissingDataColor property.
3 Comments
DGM
on 26 Nov 2021
Maybe something like this:
load CorrelationData.mat
thresh = 0.05;
pvals = [rpval_CP,pval_CP,rpval_MNP,pval_MNP]; % p-val
r = [r_CP,rho_CP,r_MNP,rho_MNP]; % idk what you call these
pvals(pvals<thresh) = NaN;
alldata = reshape([r; pvals],size(pvals,1),[]).'; % interleave and transpose
h=heatmap(1:30, ...
["r(FCP)","r(FCP) {\it{p-value}}","{\rho}(FCP)","{\rho}(FCP) {\it{p-value}}","r(IDP)","r(IDP) {\it{p-value}}","{\rho}(IDP)","{\rho}(IDP) {\it{p-value}}"], ...
alldata,'Colormap',jet);
caxis([-1 1])
colormap(parula)
More Answers (1)
See Also
Categories
Find more on Colormaps in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!