How to make a vertical label horizontal?

Hi, I am trying to give each bar a label. However, when I try to do it, it displays the label vertically, but I would like to have it horizontally otherwise it doesn't fit.. Does anyone know how to do that?? Thanks!!!
x = 1:1:15;
y = vMean(1:15);
name = {'gross', 'comp', 'rate', 'inv', 'gross', 'comp', 'rate', 'inv', 'gross', 'comp', 'rate', 'inv','gross', 'comp', 'rate'}
figure(6);
bar(x,y);
set(get(gca, 'XTicklabel'),'rotation', name);

1 Comment

Jan
Jan on 27 May 2018
Edited: Jan on 27 May 2018
Today I've edited your message to improve the readability. I've selected the code and pressed the "{} Code" button.

Sign in to comment.

 Accepted Answer

How about this:
x = 1:15;
y = randi([10 30],size(x));
name = {'gross', 'comp', 'rate', 'inv', 'gross', 'comp', 'rate', 'inv', 'gross', 'comp', 'rate', 'inv','gross', 'comp', 'rate'};
figure(6);clf(6)
bar(x,y);
set(gca, 'XTick',min(x):max(x))
set(gca, 'XTickLabel',name)
set(gca,'XTickLabelRotation', 90)

1 Comment

+1. It can be important to set the XTicks also. The output is confusing, if the number of Ticks differ from the number of TickLabels. This does not happen for bar plots, but it for a general solution it is safer, to define them both.

Sign in to comment.

More Answers (2)

Jan
Jan on 27 May 2018
Edited: Jan on 27 May 2018
set(get(gca, 'XTicklabel'),'rotation', name)
Almost. But:
get(gca, 'XTicklabel')
gets the strings of the XTickLabels as cell string. Not useful here. Better:
set(gca, 'XTicklabel', name, 'XTickLabelRotation', 90)

1 Comment

Or, for versions later than R2014b
ax = gca;
ax.XTickLabel = name;
ax.XTickLabelRotation = 90;
if you want the OOP way of setting properties like other languages use.

Sign in to comment.

Asked:

on 27 May 2018

Commented:

Jan
on 29 May 2018

Community Treasure Hunt

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

Start Hunting!