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

43 vues (au cours des 30 derniers jours)
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!

Réponse acceptée

dpb
dpb le 29 Août 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 commentaires
Ifigenia Aslanidou
Ifigenia Aslanidou le 30 Août 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 le 30 Août 2021
Yes, using text() works ... why TMW neutered the interpreter for the tick labels is anybody's guess.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by