Help with centralling text values above a Bar Chart with side by side data

3 visualizaciones (últimos 30 días)
Hello, I am plottign a barchart from data from a uitable. I have 2 ydata sets that I plot next to each other as below.
im138.png
I am wanting to display the values on each column bar and I have almost done it. But they are not quite central with respect to the bars. Here is my code:
%Get data from UITABLE
data=get(handles.uitable3,'data');
Y=cell2mat(data(:,4));
X=data(:,2);
%Prepare for catergorical X data
Xdata = categorical(X);
X = reordercats(Xdata,X);
axes(handles.axes2);cla reset
%Combine Y data and create bar chart
Y1=cell2mat(data(:,3));
bpcombined = [Y, Y1];
hb = bar(X, bpcombined, 'grouped');
legend({'400-800nm','FilterBand'},'Location','northoutside','FontSize',10,'NumColumns',2)
%Add text to top of barcharts
for i1=1:numel(Y1)
text(X(i1),Y1(i1),num2str(Y1(i1),'%0.0f'),...
'HorizontalAlignment','left',...
'VerticalAlignment','bottom','Color','w')
text(X(i1),Y(i1),num2str(Y(i1),'%0.0f'),...
'HorizontalAlignment','right',...
'VerticalAlignment','bottom','Color','w')
end
%Sometimes the txt is off the plot so resize the ylims (Maybe there is a better way to do this!)
if max(ylim)>=Y(end)
ylim([0 1.10*Y(end)])
end
%Add the axtoolbar (This isn't working for some reason)
ax=gca;
axtoolbar(ax,{'export','restoreview','zoomout','zoomin'});
axtoolbar(ax,'Visible','on')
drawnow;

Respuesta aceptada

Rik
Rik el 10 de En. de 2020
Find the x position of the bar itself and use that in your call to text. Then you can set the HorizontalAlignment to center.
  3 comentarios
Jason
Jason el 10 de En. de 2020
Editada: Jason el 10 de En. de 2020
OK I think with Rik's suggestion I have worked it out.
When you plot catergorical data X is actually plots at locations x=1,2,3 etc.
Its the offset between groups that we need:
offset=hb(1).XOffset %hb is mt barchart handle
So I can loop through my catergorical data (X(i))
but put the x coordiante intext to be i + offset
Jason
Rik
Rik el 10 de En. de 2020
Glad to have been of help. Sorry for my slow response, I'm a bit busy today. Good to see you solved it.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by