2017-09-05 5 views
0

Matlab에서 0 이하의 배경 영역이 연한 적색으로 (그리고 결국 밝은 영역에서 0보다 큰 영역으로) 채색되어있는 그림을 그려야합니다. 빨간색 사각형이 플롯에 나타나지 않도록 아래 코드에 무엇이 잘못 되었습니까? 직사각형 명령보다 편리한 경우 배경 색상을 지정하는 또 다른 방법을 보여줄 수 있습니다. 고맙습니다.사각형을 통한 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을 채우기를 원할 것입니다.