1.动态画图(坐标轴滚动)
a.figure;
已省略,当想要在一个新的窗口上显示时,重复该语句。
b.hold on
保留之前画好的,在基础上画下一张。
c.axis([ ])
填入变量,使得坐标轴滚动。
d.当样式选择为-
线时,两点才能连成一条线段,注意此时自变量和因变量为个数为2的数组。
t=0;
t1=[0 0.1]; %“x”,因为线的样式为'-,至少同时输入两个点
m1=sin(t1); %“y”
p = plot(t1,m1,'b-','MarkerSize',5); % 线的样式为'-,颜色为蓝色
x=-1.5*pi;
axis([x x+2*pi -1.5 1.5]); % x轴和y轴的变化范围
grid on;
for i=1:1000
hold on % 保留上一张图,追加下一帧图片
t=0.1*i; %下一个点
t1=t1+0.1; %下一段线
m1=sin(t1);
p = plot(t1,m1,'-b','MarkerSize',5);
x=x+0.1;
axis([x x+2*pi -1.5 1.5]);
pause(0.01); % 参数可调整画图速率
end
2.动态绘图(坐标轴固定)
a.在红线画好之后再画蓝线,动态显示蓝线。通过循环以及getframe
实现。
b.axis([ ])
填入常值,标定坐标轴范围,使得坐标轴不滚动。
当样式选择为.
线时,两点才能连成一条线段,此时注意自变量和因变量的个数需要对应,例如都是单值,或者长度相同的矩阵等。不然会报错:错误使用plot 矢量长度必须相同
。
c.set(h,'visible','off');
此处h为句柄。通过get(h)
,可以查询该类型有那些属性可以设置,通过语句set(h, '属性名', '属性值')
可以设置属性。此处用来实现实时打点,并且显示后自动擦除。
此处的擦除功能不能使用
delete/hold off/draw now
实现,分别会遇见:
delete
:plot
和delete
语句不会严格先后执行,会完全不显示。
hold off
:在只有一个动态散点图的情况下,在循环内每执行一次后加上hold off
可以实现。但如果要实现保留动态散点作图前的图,并且实现动态散点作图只显示当前的点这样的需求时,在循环内直接使用hold off
会将之前的图一并擦去。
drawnow
:好像是不行,反正我没有成功。
clc;
close all;
x1 = 1:100;
y2 = 0.03 * x1;
plot(x1,y2,'.r');
axis([0,100,0,3]);
hold on;
y1 = zeros(1,101)+2;
j=0;
i= -1;
x2= 0:1:100;
for k=1:100
j = j+1;
i = i+1;
x = x2(1,j);
y=y1(1,x2(1,j)+ 1);
h = plot(x,y,'.b');
axis([0,100,0,3]);%坐标轴的范围
pause(0.2); % 调整速率
getframe;
set(h,'visible','off');
end