MATLAB: How to label stacked bar

label;MATLABstacked bar

Hi,
I have a stacked bar that I would like to label, but it is turning out more frustrating than I thought. I basically want to label each portion of the stacked bars.
It is an 11 by 5 matrix of the distance covered by each footballer while walking, jogging, running, high-speed running and sprinting.
The basics of the code that I use is as follows, and a sample of the stacked bar is shown in the picture
figure; bar(rand(11,5), 'stacked');
set(hText, 'VerticalAlignment','bottom', 'HorizontalAlignment', 'center','FontSize',16, 'Color','k');
hLegend = legend(bar(Belgium_TimeMotion_ascending(:,1:5), 'stacked'), {'Walking (<2m/s)','Jogging (2 to 4m/s)','Running (4 to 5.5m/s)','High-speed running (5.5 to 7m/s)','Sprinting (>7m/s)'});
set(hLegend, 'Location','Best','FontSize',10);
legend('boxoff');
Is there a syntax I can use to
  1. label the portions of the stacked bars?
  2. set a conditional statement not to display any zero values (e.g. player 1 did not do any high-speed running or sprinting, so figure does not need to display "zero" two times.
Any help is appreciated. Thank you!

Best Answer

I did not test this code, but it should skip the 0 values
hText=zeros(1,size(sample_data,2));
for n=1:size(sample_data,2)
labels_stacked=num2str(sample_data(:,n),'%.1f m');
textheight=sum(sample_data(:,1:n),2);
text_x=1:size(sample_data);
non_zero=sample_data(:,n)~=0;
hText(n) = text(text_x(non_zero), textheight(non_zero), labels_stacked(non_zero,:));
end
Are you planning to do something with hText? If so, you should think about making a vector/matrix of handles.