plot bar with two colors

2 vues (au cours des 30 derniers jours)
bekka mohamed
bekka mohamed le 22 Oct 2020
Commenté : Rik le 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.
can you help me please
T=readtable('file.xlsx');
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

Réponse acceptée

Andy
Andy le 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
  1 commentaire
Rik
Rik le 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.

Connectez-vous pour commenter.

Plus de réponses (1)

Rik
Rik le 22 Oct 2020
Modifié(e) : Rik le 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
  4 commentaires
bekka mohamed
bekka mohamed le 22 Oct 2020
oh, my bad ! it was a probleme with my data . so the code works perfectly thank you for your effort
bekka mohamed
bekka mohamed le 22 Oct 2020
and am using R2018b

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by