2010-11-06 104 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