2017-07-23 2 views
3

Ich möchte ein Hintergrundrechteck hinter einigen Daten zeichnen. Rectangle unterstützt keine Zeiten wie die X-Koordinate oder die Breite. Gibt es eine andere Möglichkeit, dies zu tun?Wie zeichne ich ein farbiges Rechteck auf einem Diagramm, wenn die x-Achse die Zeit ist?

Einfacher Fall:

time_data = datetime(2017,7,23) + duration(6,0:10:(60*14),0); 
data = sort(rand(size(time_data))); 
time_rectangle = datetime(2017,7,23) + duration([9 5+12],0,0); 

figure(1) 
plot(time_data,data) 
hold on 
plot([time_rectangle(1) time_rectangle(1)],ylim(),'--k','linewidth',1) 
plot([time_rectangle(2) time_rectangle(2)],ylim(),'--k','linewidth',1) 

ylimits = ylim(); 
rectangle(time_rectangle(1),ylimits(1),diff(time_rectangle),diff(ylimits)) 

(wenn Rechteck arbeitet das Rechteck vor den Daten sein würde, aber das wäre einfach zu beheben)

Antwort

0

Sie verschiedene Achsen für das verwenden können. Statt über die letzte Zeile, geben Sie dies:

xlimits = xlim(); % get the time limits 
num_rectangle = datenum(time_rectangle); % convert the rectangle unites to numeric 
axes; % add another axes 
% add the rectangle only with numeric units: 
rectangle('Position',... % draw a semi-transparent green rectangle 
      [num_rectangle(1) ylimits(1) diff(num_rectangle) diff(ylimits)],... 
      'FaceColor',[0.5 1 0.5 0.5],'EdgeColor','none') 
xlim(datenum(xlimits)) % set the new axes limits to be the same as the the original axes 
axis off % turn off the new axes, to see the only the rectangle 

rectangle

+0

@tannoreth Ihre Frage damit beantwortet? Wenn ja, bitte überdenken Sie es/akzeptieren Sie es, um zukünftige Leser zu informieren, dass es eine funktionierende Lösung ist. – EBH

Verwandte Themen