绘画区动态线图

时间:2010-11-06 18:50:13

标签: matlab plot

在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

我想知道你是否可以为两条线之间的区域着色(这是白色但我想知道你是否可以改变一个区域的颜色) 我会提供一个样本,但我有足够的分数。我也想知道如果有很多变化,你是否可以平滑图表中的尖峰。

提前感谢您的帮助。我希望我能解释清楚。我尝试使用命令 area(),但没有成功....

1 个答案:

答案 0 :(得分: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

然后,您可以添加绘制迹线的前导点。