# plot bar with two colors

5 views (last 30 days)
bekka mohamed on 22 Oct 2020
Commented: Rik on 22 Oct 2020
hello,
i want to plot my bar in two colors conditions.if Tr<0 the color is red else the color is green. Ihqve tryed this but it didn't works.
A=T{:,:};
Tr=A(:,1);
EPR=A(:,2);
for i=1:length(A)
h=bar(Tr,EPR)
hold on
if (Tr<0)
barcolor='r';
else
barcolor='g'
end
end

Andy on 22 Oct 2020
figure();
hold on
for i=1:length(A)
if (Tr(i)<0)
h=bar(Tr(i),EPR(i),'r');
else
h=bar(Tr(i),EPR(i),'g');
end
end
hold off
Rik on 22 Oct 2020
Just a note: it is bad design to use length for matrices. It is also probably not a good idea to create many bar objects, as that many graphics objects may cause performance issues.

Rik on 22 Oct 2020
Edited: Rik on 22 Oct 2020
If you insist on separate bar objects you can use the first part, if not, you can use the second part
figure(2),clf(2)%ensure a clean figure for this example
A=rand(10,2)*5-2.5;%generate random data
Tr=A(:,1);
EPR=A(:,2);
subplot(1,2,1)
%for i=1:length(A)
for n=1:size(A,1)% or since R2020b: n=1:height(A)
width=0.05;
h=bar(Tr(n),EPR(n),width);
hold on
if (Tr(n)<0)
h.FaceColor='r';
else
h.FaceColor='g';
end
end
subplot(1,2,2)
L=Tr<0;
EPR_part=EPR;EPR_part(~L)=NaN;% this step is only require to make the bars the same width
bar(Tr,EPR_part,'r'),hold on
EPR_part=EPR;EPR_part( L)=NaN;
bar(Tr,EPR_part,'g'),hold off
bekka mohamed on 22 Oct 2020
and am using R2018b

### Categories

Find more on Graphics Object Programming in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by