how to make heatmap have a square-shape?

69 views (last 30 days)
kinger
kinger on 13 Sep 2019
Answered: Ramy Rabie on 6 Jun 2020
when I do
a=rand(4);
heatmap(a);
I got the following image:
untitled.jpg
How can I make the figure to a square-shaped one? I tried to use
axis equal;
but there's an error: Using axis with heatmap is not supported.
It seems that "axis" is not supported in heatmap.

Accepted Answer

Shubh Sahu
Shubh Sahu on 17 Sep 2019
Hello Kinger,
heatmap does not support axis command directly but by extracting properties of heatmap, square-shaped figure can be made.
a=rand(4);
k=heatmap(a);
k.positions=[0.1300 0.1100 0.7179 0.179];
While using above code, make sure that Units property is set to normalized.
Regards,
Shubh
  1 Comment
kinger
kinger on 17 Jan 2020
k.position instead of k.positions

Sign in to comment.

More Answers (1)

Ramy Rabie
Ramy Rabie on 6 Jun 2020
x = [zeros(11,1), 6*ones(11,1) , 137*ones(11,1) ,...
84*ones(11,1) ,9*ones(11,1) ,4*ones(11,1)]
y = [ ones(1,6) ; 4*ones(1,6) ; 45*ones(1,6) ;...
25*ones(1,6) ; 2*ones(1,6) ; 2*ones(1,6) ;...
13*ones(1,6) ; 52*ones(1,6) ; 58*ones(1,6) ;...
15*ones(1,6) ; 4*ones(1,6)]
% Making Heatmap figure has square tiles
wposX=100; wposY = 100;
heatmapLength = 500;
heatmapWidth = heatmapLength - (size(y,2)/size(y,1))*heatmapLength;
figure('Renderer', 'painters', 'Position', [wposX wposY heatmapWidth heatmapLength])
tempMap = heatmap(x+y);
% Make heatmap fill the figure
tempMap.InnerPosition = [0 0 1 1];

Community Treasure Hunt

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

Start Hunting!

Translated by