对于plot画线暂时总结出来几点需要注意的:
绘图的结果是坐标( 1 , 5 )--> (2 , 8 );
所以在画连续的动态图的时候,需要正确标注好每次坐标 。
对多个点,比如在矩阵中的多组数据,可以用不同的表示来展现自己想要的结果。
可以看见 x 的所有数据对按行连在一条线上
对矩阵进行转置,结果为 (1,2)--> (10,20)连线
在数据循环里(for),先画两个点的图,然后 pause
for i=1:length(data)
plot([X(i,1),Y(i,1)],[X(i,2),Y(i,2)],'-b.','MarkerSize',10);
hold on; %保持让上一个点显示
pause(0.05); %暂停,就可以看到点的变化走向
end
这是参考博客 https://blog.csdn.net/u010480899/article/details/78234884/ 他提到的两种绘制动态图的方法都很好
close all;
clear all;
clc;
clf;
xlabel('X轴');
ylabel('Y轴');
box on;
axis([-2,2,-2,2]);
axis equal;
pause(1);
h=line(NaN,NaN,'marker','o','linesty','-','erasemode','none');
t=6*pi*(0:0.02:1);
for n=1:length(t)
set(h,'xdata',2*cos(t(1:n)),'ydata',sin(t(1:n)));
pause(0.05);
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if n==1
imwrite(imind,cm,'test.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);
else
imwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',1e-4);
end
end
2.1 方法二
close all;
clear all;
clc;
clf;
%白色背景
axis([-2,2,-2,2]);
xlabel('X轴');
ylabel('Y轴');
%四周的边框
box on;
%绘图区域
t=0:0.02:10;
Nt=size(t,2);
x=2*cos(t(1:Nt));
y=sin(t(1:Nt));
%循环绘图
for i=1:Nt;
cla;
hold on;
plot(x,y)
plot(x(i),y(i),'o');
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if i==1
imwrite(imind,cm,'test.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);
else
imwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',1e-4);
end
end
画线:plot ( [x1,y1] , [x2,y2] , '.-b' ); % 线上的点标记是 . ,线的格式是 - ,线的颜色是 蓝色。
画点:plot( x , y, 'or' , 'MarkerSize', 5); %点的形状是 圆圈 o ,点的尺寸是 5 号。
常见的点形状,线形状,颜色如下:
线型 |
说明 |
标记符 |
说明 |
颜色 |
说明 |
- |
实线(默认) |
+ |
加号符 |
r |
红色 |
-- |
双划线 |
o |
空心圆 |
g |
绿色 |
: |
虚线 |
* |
星号 |
b |
蓝色 |
:. |
点划线 |
. |
实心圆 |
c |
青绿色 |
x |
叉号符 |
m |
洋红色 |
||
s(square) |
正方形 |
y |
黄色 |
||
d |
菱形 |
k |
黑色 |
||
^ |
上三角形 |
w |
白色 |