Adding text programmatically to a figure

조회 수: 16(최근 30일)
Pappu Murthy
Pappu Murthy 2022년 1월 3일
편집: DGM 2022년 1월 3일
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
DGM 2022년 1월 3일
편집: DGM 2022년 1월 3일
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);
subplot(2,1,1)
surf(x,y,z,'facelighting','flat');
camlight
subplot(2,1,2)
surf(x,y,z,'facelighting','gouraud');
camlight
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.

추가 답변(1개)

dpb
dpb 2022년 1월 3일
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.

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by