Bar graph grouped with two y axis

101 views (last 30 days)
Shu-An Hsieh
Shu-An Hsieh on 6 Dec 2021
Commented: Adam Danz on 10 Dec 2021
% clc
% clear all
x = categorical({'Filament'; 'Model'});
%y = [0.415047 0.11398; 0.41697 0.013588];
y = [0.415047; 0.41697];
z = [0.11398,0.013588];
bar (x,y,'grouped')
hold on
yyaxis right
%ylim([0.35, 0.45]);
ylabel('Weight (g)');
%err = [0.002542, 0.002192];
%errorbar(A, y, err, '- .', 'MarkerSize', 8)
yyaxis left
%ylim([0, 0.15]);
ylabel('Mass reduction (%)');
%err = [0.003711,0.001355];
%errorbar(A, z, err, '- .', 'MarkerSize', 8)
bar (x,z,'grouped')
hold on
Trying to get a bar graph that share same axis and have two y axis. Tried 'grouped' function but still come out as a stacked bar graph.
  1 Comment
Adam Danz
Adam Danz on 6 Dec 2021
I've formatted your code and produced the resultant figure using the Run feature. What would you like to change about this figure?

Sign in to comment.

Accepted Answer

Dave B
Dave B on 6 Dec 2021
Edited: Dave B on 6 Dec 2021
bar graphs don't collaborate between sides of a yyaxis very well, but you can fake it by padding with zeros:
x = categorical({'Filament'; 'Model'});
y = [0.415047; 0.41697];
z = [0.11398; 0.013588];
nil = [0; 0];
bar(x, [y nil], 'grouped')
ylabel('Mass reduction (%)');
yyaxis right
bar(x, [nil z], 'grouped')
ylabel('Weight (g)');
Adam Danz
Adam Danz on 10 Dec 2021
Thanks for the reminder, Dave. I couldn't remember if I had used those newer properties or not but it looks like I did.

Sign in to comment.

More Answers (0)


Find more on 2-D and 3-D Plots in Help Center and File Exchange


Community Treasure Hunt

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

Start Hunting!

Translated by