heatmap cannot have Axes or uiaxes as parent
Show older comments
Any workaround this limitation?
Mathworks, it would be greatly appreciated if this would become a possibility in future releases!
Thank you,
Alex.
Answers (1)
Vedant Shah
on 10 Mar 2025
As per the documentation, it is not possible to place a heatmap inside a UIAxes.However, a similar workflow can be achieved using the “UIPanel”. To gain greater control over the position, size, and overall layout of the heatmap, consider the following workaround:
- Use a “UIPanel” as the parent container for the heatmap to enhance control over positioning and layout.
- Embedd the heatmap within the “UIPanel” thus achieving functionality similar to “UIAxes”, in terms of precise positioning and layout adjustments.
- This workaround allows precise positioning for a structured layout, layout control for seamless integration, and flexibility to replicate “UIAxes” functionality when direct embedding is not feasible.
Below is an example code snippet for the approach mentioned above:
% Create UIFigure
fig = uifigure('Name', 'Heatmap Example', 'Position', [100, 100, 500, 400]);
% Create a Panel to Act Like UIAxes
p = uipanel(fig, 'Position', [50, 50, 400, 300]);
% Define heatmap data
cdata = [45 60 32; 43 54 76; 32 94 68; 23 95 58];
xvalues = {'Small','Medium','Large'};
yvalues = {'Green','Red','Blue','Gray'};
% Create heatmap inside the Panel
h = heatmap(p, xvalues, yvalues, cdata);
Here is a screenshot of expected output from the above code snippet:
For a better understanding of the functions used in above workaround, refer to the documentations using the following commands in MATLAB command line:
web(fullfile(docroot, "/matlab/ref/uifigure.html"))
web(fullfile(docroot, "/matlab/ref/uipanel.html"))
web(fullfile(docroot, "/matlab/ref/heatmap.html"))
Categories
Find more on Data Distribution Plots 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!