How to plot with bar3 plot in MATLAB?

2 views (last 30 days)
I am trying to draw something like the picture below in Matlab:
with adding the percentage above every bar. Is it possible to get some help, please?
Below is my trying:
B = [86, 82, 80];
B2 = [91, 88, 85];
B3 = [98, 95, 89];
z = [B; B2; B3];
environment = [30*30, 50*50, 100*100];
bar3(z)

Accepted Answer

Fabio Freschi
Fabio Freschi on 20 Oct 2022
Check the code below, Hope it helps
clear variables, close all
B = [86, 82, 80];
B2 = [91, 88, 85];
B3 = [98, 95, 89];
z = [B; B2; B3];
environment = [30*30, 50*50, 100*100];
% change the width
bar3(z,0.3)
% label x axis
xticklabels({'Bezier 1','Bezier 2','Bezier 3'})
% label y axis
yticklabels({'30*30', '50*50', '100*100'})
ylabel('Grid size')
% label z axis
zlabel('Success rate')
% set view
view([1 1 1])
% text above bar
xt = repmat(1:3,1,3);
yt = repmat(1:3,3,1);
zt = repmat(105,9,1);
text(xt(:),yt(:),zt(:),[num2str(z(:)),repmat('%',9,1)])

More Answers (1)

Kevin Holly
Kevin Holly on 20 Oct 2022
Edited: Kevin Holly on 20 Oct 2022
B = [86, 82, 80];
B2 = [91, 88, 85];
B3 = [98, 95, 89];
z = [B; B2; B3]';
environment = ["30*30", "50*50", "100*100"];
b = bar3(z,0.3);
b(1).FaceColor = 'r';
b(2).FaceColor = 'b';
b(3).FaceColor = [.2 .5 .2];
grid on
h=gca;
h.XTickLabel = ["Beizer 1";"Beizer 2";"Beizer 3"];
h.YTickLabel = environment;
ylabel('Grid Size')
zlabel('Success Rate')
view(-15,16)
Edit:
% Borrowed from Fabio
xt = repmat(1:3,1,3);
yt = repmat(1:3,3,1);
zt = repmat(105,9,1);
text(yt(:),xt(:),zt(:),[num2str(z(:)),repmat('%',9,1)])

Categories

Find more on Discrete Data 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!