2010-11-06 64 views
1

在matlab中,您可以爲打印在圖上的兩行之間的區域着色。 以下代碼打印一張動態圖。繪畫區域動態線條圖

figure('doublebuffer','on') 
t=0; 
r=32; 
g=32 
axes('xlim',[0 24], ... 
    'nextplot','add') 
p1=plot(t,r,'r','LineWidth',2); 
p2=plot(t,r,'b.','MarkerSize',15); 
p3=plot(t,g,'b','LineWidth',2); 
p4=plot(t,g,'g.','MarkerSize',15); 
for t=1:24 
ylim('auto') 
r=abs(22*(rand(1,1)+1)); 
g=abs(8*(rand(1,1)+1)) 
set(p1,'xdata',[get(p1,'xdata') t],... 
    'ydata',[get(p1,'ydata') r]) 
set(p2,'xdata',t,... 
    'ydata',r) 
set(p3,'xdata',[get(p3,'xdata') t],... 
    'ydata',[get(p3,'ydata') g]) 
set(p4,'xdata',t,... 
    'ydata',g) 
pause(0.5) 
end 

我在想,如果你能顏色的兩條線是dinamically情節之間的區域(現在是白色的顏色,但我不知道,如果你可以改變一個區域的顏色) 我會把樣品,不過我有足夠的分數。我還想知道,如果有很大的變化,是否可以消除圖表中的尖峯。

在此先感謝您的幫助。我希望我在解釋中很清楚。我嘗試使用命令area()但沒有成功....

回答

1

關於在兩行之間填充顏色,可以使用函數FILL。以下是對您的示例的修改,說明如何執行此操作:

t = 0:24;    %# t values 
r = [32 zeros(1,24)]; %# Initialize r values 
g = [32 zeros(1,24)]; %# Initialize g values 
hFill = fill([t(1) t(1)],[r(1) g(1)],'r'); %# Fill between r and g with red 
for iPoint = 2:length(t) 
    r(iPoint) = 22*(rand+1); %# Add a value to r 
    g(iPoint) = 8*(rand+1); %# Add a value to g 
    set(hFill,'XData',[t(1:iPoint) t(iPoint:-1:1)],... %# Update x data 
      'YData',[r(1:iPoint) g(iPoint:-1:1)]); %# Update y data 
    pause(0.5); 
end 

然後,您可以添加繪圖中跡線的前導點。

+0

非常感謝,我看到了命令填充,但我無法使其在循環中生效。我們感謝您的幫助 – Marietto85 2010-11-14 14:37:46