Centering labels in a bar plot

How do I center a string under each bar at in a bar plot? Something like the following is the best I can do, but it's a lot of trial-and-error, and the strings are still off center:
x1 = linspace(1,33,33);
x2 = linspace(0.6,33,33);
figure;
bar(x1,y)
xticks(x2)
xticklabels(names)
xtickangle(75)

 Accepted Answer

dpb
dpb on 22 Jan 2023
Edited: dpb on 22 Jan 2023
Let bar do the work for you...you didn't supply all the needed code to run the example, but something similar would be
x=1:33; % no need for linspace for integer spacing
y=randi(100,size(x)); % some data to go along with x...
names="Var"+x(:); % make up a a name to go along
names=categorical(names,names,names); % turn into categorical; keep ordering
bar(names,y)
I love to beat up on the bar() function as being a terrible user interface and all, but in this case there's a simple answer.
There is now an example in the bar documentation that illustrates putting a text string at the end of a bar, centered on the bars using the internal properties of the bar object. That's a sizable a step forward from the olden days when it was required to derive that location from the internal data or even worse, when those needed data were made hidden properties for a while...still, it should be a user-settable property, but at least it can be done and is an illustration of the basic "how".

More Answers (0)

Products

Release

R2021b

Asked:

on 22 Jan 2023

Edited:

dpb
on 22 Jan 2023

Community Treasure Hunt

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

Start Hunting!