How can I break the text in two or three lines of the x tick label on a box plot?

48 views (last 30 days)
Hello everyone! Can anybody help me break the x tick labels in multiple lines?
Each xtick label is actually a really long name so I though it would be better to replaced them with A-K..
I tried using \ or {'A1';'A2'} but it wont work..
boxplot(subjective,'Labels',{'A','B','C','D','E','F','G','H','I','J','K'},...
'PlotStyle','compact','Orientation','vertical', 'BoxStyle','filled','MedianStyle',...
'target', 'Symbol','x','OutlierSize',8);
Thank you in advance!

Accepted Answer

dpb
dpb on 29 Aug 2021
Unfortunately, the tick label interpreter won't pass a string with embedded \n on; it instead splits the string into two.
I don't think you can do it with either the 'TeX' or 'LaTeX' interpreter with the tick labels; you would have to use text to write the labels independently.
  2 Comments
Ifigenia Aslanidou
Ifigenia Aslanidou on 30 Aug 2021
Hey, so I did some research and this code was successfull:
h=[];
color1 = gray(60);
boxplot(subjective,'PlotStyle','compact','Orientation','vertical', 'BoxStyle','outline','MedianStyle',...
'target','Color',(color1),'Widths',0.7,'Symbol','x','OutlierSize',8);
ax = gca;
ax.XTick = [1 2 3 4 5 6 7 8 9 10];
ax.XTickLabel = '';
myLabels = {'A1', 'B1', 'C1', 'D1',...
'E1', 'F1', 'G1', 'H1','I1', 'J1';...
'A2','B2','C2', 'D2', 'E2', 'F2',...
'G2','H2','I2', 'J2'};
for i = 1:length(myLabels)
h(i)=text(ax.XTick(i), ax.YLim(1), sprintf('%s\n%s\n', myLabels{:,i}), ...
'horizontalalignment', 'right', 'verticalalignment', 'middle');
set(h,'Rotation',90); %rotating the x label
end
% ax.XLabel.String = sprintf('\n\n\n\n\n%s', 'something'); %x label name
dpb
dpb on 30 Aug 2021
Yes, using text() works ... why TMW neutered the interpreter for the tick labels is anybody's guess.

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!