How to make long title for a plot with automatic line breaks?
26 次查看(过去 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 个评论
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 中查找有关 Labels and Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!