Change bar plot colours in MATLAB 2014b

In MATLAB 2014a and earlier, one could use "get" and "set" to control the colour of the individual bars of a bar plot using the code below.
x=0:10; y=rand(size(x));
figure(1)
b=bar(x,y);
b_child=get(b,'Children');
set(b_child,'CData',x)
%set(b_child,'CData',y)
However, this does not appear to work in MATLAB 2014b; "b.Children" is an empty GraphicsPlaceholder array. Is there a way? I realise that it would be possible to declare "hold on" and plot each bar individually, but I would rather avoid this.

Answers (1)

In case it is useful to anyone, this is the workaround I am using.
x=0:10; y=rand(size(x));
C=colormap;
c=interp1((0:size(C,1)-1)/(size(C,1)-1),C,x./max(x));
figure(1)
barr(x,y,c);
with the function
function barr(x,y,c)
for count=1:max(size(x))
X=ones(size(x))*NaN;
Y=X;
X(count)=x(count);
Y(count)=y(count);
bar(X,Y,'FaceColor',c(count,:))
if count ==1; hold on; end
end
hold off
end

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Products

Asked:

on 20 Feb 2015

Answered:

on 20 Feb 2015

Community Treasure Hunt

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

Start Hunting!