I have a bargraph (2D) and I want to make the background red for parts where another vector has a value > 1 i.e.
example:
graph = [2 3 5 4 9 1 7] color = [0 2 2 1 0 1 2]
so the barplot will show usual bars and the background behind (including the space between the bars) is colored red behind the bars of "3","5" and "7" (position 2,3,7)
Is that somehow possible?
Thanks
Yes, this is possible
%# define some parameters
backgroundColor = 'r';
backgroundWidth = 0.9;
foregroundWidth = 0.3;
%# collect the data
graph = [2 3 5 4 9 1 7];
color = [0 2 2 1 0 1 2];
x = 0:length(graph)-1;
colIdx = color>1;
bgBarHeight = max(graph)+1; %# background bars are 1 taller than max
%# first, plot red bars - I plot them as background as in your question,
%# not as transparent overlay as in your example (see yuk's answer for that)
bar(x,colIdx*bgBarHeight,backgroundWidth,'FaceColor',backgroundColor,'EdgeColor','none')
%# use hold on to prevent background from disappearing
hold on
%# then, plot foreground bars. Use hold on so that the background isn't lost
bar(x,graph,foregroundWidth,'FaceColor','k')
%# label the axes
xlabel('X Axis')
ylabel('Y Axis')