MATLAB: Ordering graphics objects

childrengraphicsordering objects

Hi, I have a rectangular and a line graph, and I want to order the rectangle such that it is at the back of the figure (i.e. behind the line graph). How do I do this? I tried to use the set(gca,'Children',…) command, but it didn't work (i.e. the rectangle shows up on top of the graph, and hides the data). My operating system is Mac OS X, in case that matters. See the example code below:
function test_plot( )
figure;
p = plot(ones(5,1));
r = rectangle('Position',[0,0.9,1,0.2],'FaceColor','y');
set(gca,'Children',[p r])
end

Best Answer

Command plot(x) is equivalent to plot(1:numel(x),x). In your example the rectangle is placed before the line on the x axis.
Plot line in this way:
p = plot(0:4,ones(5,1));
r = rectangle('Position',[0,0.9,1,0.2],'FaceColor','y');
set(gca,'Children',[p;r])