plot bar with two colors
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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
0 Commenti
Risposta accettata
Andy
il 22 Ott 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 Commento
Rik
il 22 Ott 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.
Più risposte (1)
Rik
il 22 Ott 2020
Modificato: Rik
il 22 Ott 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 Commenti
Vedere anche
Categorie
Scopri di più su Graphics Object Properties in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!