plot bar with two colors

2 ビュー (過去 30 日間)
bekka mohamed
bekka mohamed 2020 年 10 月 22 日
コメント済み: Rik 2020 年 10 月 22 日
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

採用された回答

Andy
Andy 2020 年 10 月 22 日
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 件のコメント
Rik
Rik 2020 年 10 月 22 日
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.

サインインしてコメントする。

その他の回答 (1 件)

Rik
Rik 2020 年 10 月 22 日
編集済み: Rik 2020 年 10 月 22 日
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 件のコメント
bekka mohamed
bekka mohamed 2020 年 10 月 22 日
oh, my bad ! it was a probleme with my data . so the code works perfectly thank you for your effort
bekka mohamed
bekka mohamed 2020 年 10 月 22 日
and am using R2018b

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeGraphics Object Properties についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by