2017-09-05 30 views
0

Matlabでゼロより下の背景領域が薄い赤色(そして最終的には明るい緑色でゼロより上の領域)に着色されたプロットを描きたい。赤い四角形がプロットに表示されないように私のコードで何が間違っていますか?また、rectangleコマンドよりも便利な場合は、バックグラウンドを色付けする別の方法を私に教えてください。ありがとうございました。矩形でのMatlabプロットの色の背景

Y = []; 
for year = 2008:2016 
    Y = vertcat(Y,[year;year]); 
end 
M = repmat([01;07],9,1); 
D = [01]; 
vector = datetime(Y,M,D); 

figure; 
rectangle('Position',[0,-2e4,length(vector),2e4],'FaceColor',[1 0 0],'EdgeColor',[1 0 0]); 
hold on; 
plot(vector, [-2e4, -1e3, -5, -100, 5, 20, 100, 40, -20, -200, -600, -2, 30, 80, 200, 800, 1500, 2500], 'LineWidth',1.2), grid on; 
dateaxis('x', 12); 

答えて

1

ベクトルを数値に変換する必要があります。 私は通常、背景を着色するためにfillを使用します。

figure;hold on 
fill([2008 2016 2016 2008 ],... 
[-2e4 -2e4 0 0],'r'); 
fill([2008 2016 2016 2008 ],... 
[0 0 3e3 3e3],'g'); 
plot(str2num(datestr(vector,'yyyy')), ... %%%convert vector format 
[-2e4, -1e3, -5, -100, 5, 20, 100, 40, -20, -200, -600, -2, 30, 80, 200, 800, 1500, 2500], ... 
'LineWidth',1.2), grid on; 
axis([2007 2019 -2e4 3e3]) 

出力があまり良くありません。たぶん、transparencyを塗りつぶしにしたい場合は

関連する問題