Adding text programmatically to a figure
156 views (last 30 days)
I have a figure with several subplots in it. I want to place a textbox with some text init which belongs to the entire figure. However, whenever I try to use the text command to place the text, it places it relative to the current subplot but not to the overall figure. How do I overcome this nuance?
Thanks in advance.
DGM on 3 Jan 2022
Edited: DGM on 3 Jan 2022
If you just want to put a title over multiple subplots, you can use sgtitle().
If you want text in a box with arbitrary location, you can use annotations.
[x y z] = peaks(30);
annstr = sprintf('blah blah\nblah'); % annotation text
annpos = [0.1 0.1 0.1 0.1]; % annotation position in figure coordinates
ha = annotation('textbox',annpos,'string',annstr);
ha.HorizontalAlignment = 'center';
ha.BackgroundColor = [0.9 0.5 1]; % make the box opaque with some color
The other properties of the annotation can be set as needed.
More Answers (1)
dpb on 3 Jan 2022
text() is exclusively a child of an axes, not a figure. To write text outside the boundaries of an axis, use the annotation object instead.
Or, depending upon just what you want/need for this to contain, use tiledlayout with which you can have a shared title and axes labels. Those may or may not be sufficient for your purpose.