Bar graphs don't group bars if there is only one group in the data

I have a lot of bar graphs to plot. The bars must be grouped into pairs. If the number of pairs is one, then grouping doesn't seem to work:
% Artificial data: Two vertical vectors of height 3
x=reshape(randperm(6),3,2)
% Correct grouping into pairs
subplot(1,2,1)
barh(x);
% NO grouping :(
subplot(1,2,2)
barh(x(1,:));
Is there any way to force barh to group consistently? I want each column of "x" to form a series, even if it is a series of 1. So x(1,:) forms two series, only 1 bar each. In the grouped bar chart, it should form one group of two bars, each bar with a different colour (just like each group on the left subplot). In contrast, the right subplot shows that it forms a single series of two bars (or a single series of two groups, each containing one bar). They also have separate tick lables, which bars in the same group should not.
I am using Matlab 2022a.

1 Comment

I have moved the code in comment to main body of the answer now.

Sign in to comment.

 Accepted Answer

like this ?
% Artificial data: Two vertical vectors of height 3
x=reshape(randperm(6),3,2)
x = 3×2
5 6 2 3 1 4
% Correct grouping into pairs
subplot(1,2,1)
barh(x);
subplot(1,2,2)
barh(1,x(1,:).') % like this

3 Comments

% Artificial data: Two vertical vectors of height 3
x=reshape(randperm(6),3,2)
x = 3×2
2 4 1 5 6 3
% Correct grouping into pairs
subplot(1,2,1)
barh(x);
% NO grouping :(
subplot(1,2,2)
barh([x(1,:); x(2,:);x(3,:)]);
Thanks for replying, VBBV.
My apologies, but I think I may not have been clear. I want each column of "x" to form a series, even if it is a series of 1. So x(1,:) forms two series, only 1 bar each. In the grouped bar chart, it should form one group of two bars.
Yes! After seeing your syntax, I searched for where this is described in the doc page for "barh". I found it under the description of the "y" argument -- not where I would expect it.
I'd like to mark your response as "the answer" to my question. Currently, the code that addresses the question is in the comment, whereas the main body of the answer contains different code. Is there any way to put your latest example code into the main body of the answer posting?
Thanks!

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2022a

Tags

Asked:

FM
on 1 Dec 2022

Commented:

on 2 Dec 2022

Community Treasure Hunt

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

Start Hunting!