## barh with colored bars: differences between 2012b and 2014b

### D. benoy (view profile)

on 21 Nov 2014
Latest activity Commented on by D. benoy

on 24 Nov 2014

### Doug Hull (view profile)

hi,
I have a problem with the function barh when upgrading from MATLAB 2012b to MATLAB2014b.
I have the following function
function [ h ] = barh_colored(phi,cmin,cmax,loglinear)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
nbars2 = 64;
if cmax ~= -1
xbars=cmin:(cmax-cmin)/(nbars2-1):cmax;
[counts,x] = hist(phi, xbars);
else
[counts,x] = hist(phi, nbars2);
end
if strcmp(loglinear,'log')
h = barh(x,log10(counts),1);
else
h = barh(x,counts,1);
end
set(gca,'YAxisLocation','right');
ch = get(h,'Children');
fvd = get(ch,'Faces');
fvcd = get(ch,'FaceVertexCData');
cmap=get(gcf,'Colormap');
colormap(cmap);
for i=1:nbars2
fvcd(fvd(i,:))=i;
end
set(ch,'FaceVertexCData',fvcd)
if cmax ~= -1
ylim([cmin cmax]);
end
end
This code works fine with MATLAB 2012b. It generates plots like this:
Recently I switched to MATLAB 2014b and the code does not work anymore. Reason is that barh object does not have Children anymore so that:
ch = get(h,'Children');
returns an empty GraphicsPlaceHolder object.
How can I solve this?
Dany Benoy

### Doug Hull (view profile)

on 21 Nov 2014

The Bar properties of Children is no longer available.
This is along the lines of what you want to accomplish:
bar([1 nan nan], 'facecolor',[1 0 0])
hold on
bar([nan 2 nan], 'facecolor',[0 1 0])
bar([nan nan 3], 'facecolor',[0 0 1])
hold off

D. benoy

### D. benoy (view profile)

on 24 Nov 2014
Hi Doug,
Thanks for the answer. I upated my function to
function barh_colored(phi)
nbars2 = 64;
cmap=get(gcf,'Colormap');
[counts,x] = hist(phi, nbars2);
y = NaN * ones(1,nbars2);
for i=1:nbars2
y1 = y;
y1(i) = counts(i);
barh(x,y1,'BarWidth',1,...
'facecolor',cmap(i,:));
if i == 1,hold on, end
end
set(gca,'YAxisLocation','right');
end
Dany Benoy