Fit figure size to textbox

18 views (last 30 days)
Is there some way to fit the figure size to the textbox? Example:
I have a = annotation(... 'textbox','Position',[0.1482 0.7333 0.17 0.16],... 'FitHeightToText','on',... 'String','Example');
which makes a textbox in a figure. I would like to fit the size of the figure to this textbox. Is it possible? Thanks.

Accepted Answer

Jacob Halbrooks
Jacob Halbrooks on 12 Mar 2012
You could compute your desired figure Position from the annotation and then set it, but you'll have to manage the Units consistently and reset the annotation's normalized position at the end. For example, something like this:
a = annotation('textbox','Position',[0.1482 0.7333 0.17 0.16], 'FitHeightToText','on','String','Example');
set(a,'Units','pixels');
aPos = get(a,'Position');
fPos = get(gcf,'Position');
fPos(3:4)=aPos(3:4);
set(gcf,'Position',fPos);
set(a,'Units','norm','Position',[0 0 1 1])
When possible though, it's better to create the container to the desired size first and then create its children using normalized position to fill up the container.
  1 Comment
Ondrej
Ondrej on 15 Mar 2012
Thank you Jacob. Great.
I only slightly modified your code, but it works perfectly:
a = annotation('textbox','Position',[0.1482 0.7333 0.17 0.16], 'FitBoxToText','on','String','Example');
set(a,'Units','pixels');
aPos = get(a,'Position');
fPos = get(gcf,'Position');
fPos(3:4)=aPos(3:4);
set(gcf,'Position',fPos,'Paperposition','auto');
set(a,'Units','norm','Position',[0 0 1 1])

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!