Heatmap - multiple values in same cell
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello,
is it possible to display multiple values in the same heatmap "cell"?
For example I have 3 different entries for a y-value of -51 and a x-value of 1. Can this be plotted similarly to this?

I tried doing it with the heatmap() function, but matlab only displayed one of the three entries for y = -51 & x = 1.
Thanks in advance for your help
0 Kommentare
Antworten (2)
Bjorn Gustavsson
am 8 Mär. 2022
You can convert three-valued data into an RGB-image. The simplest way to go about this is something along these lines:
dataRGB = zeros(size(HMdata,1)/3,size(HMdata,2),3); % Here I assume that each cell in y corresponds to 3 values
dataRGB(:,:,1) = HMdata(1:3:end,:);
dataRGB(:,:,2) = HMdata(2:3:end,:);
dataRGB(:,:,3) = HMdata(3:3:end,:);
To easily display this type of plot as an image we will have to normalize the values to the 0-1 range. You can do that for all three components together:
imRGB1 = normalize(dataRGB,'range',[0 1]);
or for each RGB-layer separately:
imRGB3(:,:,3) = normalize(dataRGB(:,:,3),'range',[0 1]);
imRGB3(:,:,2) = normalize(dataRGB(:,:,2),'range',[0 1]);
imRGB3(:,:,1) = normalize(dataRGB(:,:,1),'range',[0 1]);
Then you can display it using for example:
imagesc(imRGB1)
HTH
0 Kommentare
Simon Chan
am 8 Mär. 2022
Not writing data to the same cell, but writing to separate cells as a workaround:
Manually change the YDisplayLabel to let the heatmap similar to what you want.
data = rand(18,3);
h = heatmap(data);
yvalue = [-20,-39,-43,-47,-51,-55];
emptystr = repelem({''},1,length(yvalue));
numstr = arrayfun(@(x) num2str(x),yvalue,'uni',0);
h.YDisplayLabels = reshape(vertcat(emptystr,numstr,emptystr),[],1);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
