How to make long title for a plot with automatic line breaks?
조회 수: 49 (최근 30일)
이전 댓글 표시
I would like to use a very long title, which should have lots of line breaks, but I want to put line breaks automatically to achieve a kind of justified paragraph visually.
댓글 수: 0
답변 (5개)
Alberto
2015년 6월 17일
Multiline can be done using this syntax:
figure;
str=['Line1', '\n', 'Line2'];
s=sprintf('Hello\nGoodbye');
title(s)
Micke Malmström
2018년 2월 19일
편집: Micke Malmström
2018년 2월 19일
Write code to
- Get the axis width (ha.Position), and fontsize (ha.Title.FontSize) in pixels (where ha is the handle to the axis of interest)
- If you use fixed width font then it's easy to break the line with something like:
while length(ha.Title.String{end})>YourWidthValue
ha.Title.String{end:end+1}=...
{ha.Title.String{end}(1:YourWidthValue) ;...
ha.Title.String{end}(YourWidthValue:end)};
end
(have not debugged it...)
an even better way is to search backwards for the first space before your YourWidthValue...
Is it not a bit strange that matlab cannot provide this functionallity built in?
Micke Malmström
2018년 5월 23일
ha=gca; NoCharPerLine= 78; % or whatever you want...
if ismatrix(ha(end).Title.String) && size(ha(end).Title.String,2)>NoCharPerLine
II=strfind((ha(end).Title.String(1:NoCharPerLine)),' '); % find last occurence of a space
LastSpaceIndex=II(end);
ha(end).Title.String={ha(end).Title.String(1:LastSpaceIndex-1) ;
ha(end).Title.String(LastSpaceIndex+1:end)};
end
if iscell(ha(end).Title.String)
while size(ha(end).Title.String{end},2)>NoCharPerLine
STR=ha(end).Title.String{end};
II=strfind(STR,' '); % find last occurence of a space
LastSpaceIndex=II(end);
ha(end).Title.String{end}=STR(1:LastSpaceIndex-1);
ha(end).Title.String{end+1}=STR(LastSpaceIndex+1:end);
end
end
댓글 수: 0
Hannes
2018년 8월 15일
편집: Hannes
2018년 8월 15일
Thanks Micke, that helped a lot!. Now I try to adapt your code to axes labels, but struggle with that task. Do you have this already available?
댓글 수: 2
Micke Malmström
2018년 8월 15일
sorry, I dont have that problem with the lables...
What is your problem?
Hannes
2018년 8월 15일
The ylabel/xlabel don't have a title.string option to work with. So, I cannot just apply your code, it would need further re-coding, am I right?
Jan
2018년 8월 15일
This is a job for the textwrap command. Create an uicontrol('Style', 'text') at the wanted position and provide its handle to textwrap.
댓글 수: 4
Hannes
2018년 8월 16일
Thx for the response. I create a large set of subplots with many scatter plots, which are arranged in a mxn matrix, where m is the amount of input parameters and n is the amount of output parameters. I did not proceed with your approach since I hesitate to guess or somehow automate the calculation of the position for these text objects..
Jan
2018년 8월 16일
@Hannes Lück: This is a question from 2015. Prefer to open a new thread an explain your question exactly. Provide some example code to demonstrate the problem, then it is much easier to write a solution.
참고 항목
카테고리
Help Center 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!