Setting the color of specific cells in a heatmap that contains two types of data

Hi,
I created the array below in Excel, and it's perfect except that the color bar is ugly and not detailed enough.
So I've been trying to recreate it in MATLAB using the heatmap function and this is what I produced so far.
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 Kommentare

Attach your code/data to create what you have as a starting point for those here..."help us help you"
Thanks for the comment.
The code
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}}"],[r_CP,rpval_CP,rho_CP,pval_CP,r_MNP,rpval_MNP,rho_MNP,pval_MNP]','Colormap',jet);
caxis([-1 1])
The Data is attached. I hope this is helpful.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

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 Kommentare

Thanks for the answer.
This wouldn't work since I have overlapping values in both data types. Is there a way to specify the variables (vectors) I want the condition to be applied to rather than applying it to the whole heatmap?
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)
Brilliant! This definitely works. Many thanks for the help.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

I used a custom colormap from here, and the result is very close to what I had in Excel. Great!

Kategorien

Mehr zu Color and Styling finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2019a

Gefragt:

am 26 Nov. 2021

Kommentiert:

DGM
am 27 Nov. 2021

Community Treasure Hunt

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

Start Hunting!

Translated by