2017-09-05 3 views
0

Je veux dessiner une parcelle dans Matlab où la zone de fond en dessous de zéro est colorée en rouge clair (et éventuellement aussi: la zone au-dessus de zéro en vert clair). Quel est le problème avec mon code ci-dessous afin que le rectangle rouge n'apparaisse pas sur l'intrigue? Vous êtes également invités à me montrer une autre façon de colorier l'arrière-plan si cela est plus pratique que la commande rectangle. Je vous remercie.Couleur de fond de Matlab intrigue par rectangle

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); 

Répondre

1

Vous devez convertir un vecteur en nombre. J'utilise habituellement fill pour colorier l'arrière-plan.

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]) 

La sortie n'est pas très agréable. Peut-être que vous voulez donner quelques transparency pour remplir