bar plot, value on top
Mostrar comentarios más antiguos
Hi This actually works to some extent but the problem is i got all the values for each bar shown on top. So for each bar all the Y values are being shown.
x=[1:2:23]';
y=abs([121 41 20.6 12.5 8.1 5.8 4.4 3.5 3 2.7 2.3 2.1]);
bar(x,y)
text(x,y,num2str(y,'%0.2f'),...
'HorizontalAlignment','center',...
'VerticalAlignment','bottom')
Please tell me what is wrong! Thanks!
2 comentarios
Suleman Zafar
el 26 de Oct. de 2016
Hi gabe, Can you please help me with displaying the value on top of bar plot.I am using GUI and my 7 different coloured bars are continuously changing with analog input so the value should also change continuously on top. I would really apreciate your answer.
Elimelech Schreiber
el 9 de Dic. de 2020
num2str(y,'%0.2f')
converts the numbers in y, into one long string, and therefor it's repeated above each bar.
you need to have a seperate string for each value. The easiest fix here woul be:
num2str(y','%0.2f')
Respuesta aceptada
Más respuestas (5)
Elimelech Schreiber
el 5 de Nov. de 2017
simply:
bar(x);
barvalues;
6 comentarios
Alexander Pakakis
el 17 de En. de 2018
great work!!! How can I add a "%" to the back of the values?
Elimelech Schreiber
el 26 de Abr. de 2018
Editada: Elimelech Schreiber
el 2 de Oct. de 2018
use the formatspec option:
barvalues([],formatspec);
See formatspec in NUM2STR help
Example:
x=[1:10;11:20;10:19;15:24];
figure(123);
bar(x');
barvalues([],'%.0f%%');
the last '%%' directs it to append an '%' at the end.
Yasir Ali
el 2 de Oct. de 2018
Hi @Elimelech Schreiber, I am using your barvalues function. It's working perfectly. However when i am trying to put different value on top of bar, it does not work. any help. I want to plot a bar chart having ids in different matrix
a= data(:,1); % first column of data matrix containing 13 values
b= data(:,2); %containing ids of each value
bar(a);
barvalues;
Elimelech Schreiber
el 2 de Oct. de 2018
i'm sorry, barvalues() is meant to be used for displaying bar values.
If you want to display additional id labels, i recommend using:
help xticks();
help xticklabels();
Luis Fernando Marzola da Cunha
el 4 de Mayo de 2019
Elimelech Schreiber thank you very much. This function is very useful. Congratulations.
Giulia Grazioli
el 21 de Oct. de 2021
Hi @Elimelech Schreiber, I was looking for a way to write the values with "%" sing on top a bar graph and i get into yuor comment with your function. It solved all my problems, so thank you so much!!
Ross
el 21 de Mzo. de 2017
Can be a little cleaner than the above solutions, by making a cell array with the labels in advance using the arrayfun function.
x=[1:2:23]';
y=abs([121 41 20.6 12.5 8.1 5.8 4.4 3.5 3 2.7 2.3 2.1]);
bar(x,y)
labels = arrayfun(@(value) num2str(value,'%2.1f'),y,'UniformOutput',false);
text(x,y,labels,...
'HorizontalAlignment','center',...
'VerticalAlignment','bottom')
Junaid Qadir
el 18 de En. de 2019
Editada: Junaid Qadir
el 3 de Mayo de 2022
Please Try this code, Hope your problem will be solved. Best of luck
clc
clear all
close all
x = [1 2 3 4 5 6 7 8 9 10];
y = [200 250 300 350 400 450 500 550 600 700 ];
z= bar(x,y)
for i1=1:numel(y)
text(x(i1),y(i1),num2str(y(i1),'%0.0f'),...
'HorizontalAlignment','center',...
'VerticalAlignment','bottom')
end
% text(1,43,'42','Color','k','FontSize',9)
% plot(x,y, '->','LineWidth',2)
xlabel('Friends')
ylabel(' Record')
title('Friends List')
grid on
ax=gca;
ax.XTick = [1 2 3 4 5 6 7 8 9 10 ];
ax.XTickLabels = {'Junaid', ' Qadir' ,' Sahar ',' Ubaid ',' Munsif ',' Yousaf ',' Sami ','Najm',' Shakir', ' Pakistan'};
ax.XTickLabelRotation = 45;
z.FaceColor = 'flat';
% z.EdgeColor= '[1,0,0]';
z.CData(1,:) = [1,1,0];
z.CData(2,:) = [1,1,0];
z.CData(3,:) = [1,1,0];
z.CData(4,:) = [1,1,0];
z.CData(5,:) = [1,1,0];
z.CData(6,:) = [1,1,0];
z.CData(7,:) = [1,1,0];
z.CData(8,:) = [1,1,0];
z.CData(9,:) = [1,1,0];
z.CData(10,:) = [1,1,0];

4 comentarios
A. H. Choudhury
el 24 de Oct. de 2020
Dear bro, kindly give a code for the same process for a grouped bar diagram
SOMNATH MAHATO
el 3 de Mayo de 2022
x = [1 2 3 4 5];
y = [0.433 0.177 0.768 1.224; 0.379 0.158 0.267 0.320; 0.0406 0.016 0.031 0.0380; 0.0972 0.0371 0.0538 0.0483; 0.0777 0.0324 0.0552 0.0660];
x TickLabels ('xx', 'xy', 'aa', 'bb', 'cc')
How i can plot with this data? I want to plot like above figure.
Tony Castillo
el 4 de Mayo de 2022
x = [1 2 3 4 5];
y = [0.433 0.177 0.768 1.224; 0.379 0.158 0.267 0.320; 0.0406 0.016 0.031 0.0380; 0.0972 0.0371 0.0538 0.0483; 0.0777 0.0324 0.0552 0.0660];
bar(x,y)
ax=gca;
ax.XTick = [1 2 3 4 5];
ax.XTickLabels = {'xx', 'xy', 'aa', 'bb', 'cc'};
ax.XTickLabelRotation = 45;
Please try with this code
Junaid Qadir
el 4 de Mayo de 2022
@Tony Castillo Good job, I appreciate your efforts.

x = [1 2 3 4 5];
y = [0.433 0.177 0.768 1.224; 0.379 0.158 0.267 0.320; 0.0406 0.016 0.031 0.0380; 0.0972 0.0371 0.0538 0.0483; 0.0777 0.0324 0.0552 0.0660];
bar(x,y)
ax=gca;
ax.XTick = [1 2 3 4 5];
ax.XTickLabels = {'xx', 'xy', 'aa', 'bb', 'cc'};
ax.XTickLabelRotation = 45;
Junaid Qadir
el 20 de Dic. de 2018
1 voto
@ Andrei Bobrov I really appreciate your experience. Thank You so much you solved my problem. Keep help with the needy peoples. Thanks
Tony Castillo
el 18 de En. de 2019
0 votos
Hi guys,
But despite I have tried to put the avlues on the TOP/OVER every one bar, I could not, even in the code I already change botton for cap, but it has been unsuccesfull.
Could you help me to set the values on the peak of every one bar?.
The code is attached.
Thanks

Categorías
Más información sobre Bar Plots en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!