MATLAB 绘图笔记
MATLAB的语法学习曲线很特别:入门时用起来特别简单舒服,但是深入学下去就会感觉到语法非常混乱,无所适从。 尤其在绘图部分,MATLAB杂揉了命令式语句和面向对象的语句,存在太多太多的语法糖,毫无逻辑性可言。
基本作图
MATLAB可以非常容易地画一个曲线图,只需要三行代码即可(下面的figure;
语句可以省略)
1
2
3
4
5x=linspace(0,5);
y=sin(x);
figure;
plot(x, y);
MATLAB将会弹出一个绘图窗口,在其中绘制曲线。
我们可以在曲线图中加上常见的绘图元素 1
2
3
4
5
6
7
8
9
10
11
12
13
14% 标题
title('Sine Wave');
% 轴标签
xlabel('x');
ylabel('sin(x)');
% x轴和y轴范围
axis([0 2*pi -1.5 1.5]);
% 或者单独设置x轴范围
% xlim([xmin xmax])
% 添加网格
grid on;
我们可以一次性使用plot
绘制多条曲线 1
2
3
4
5
6x = linspace(0, 2*pi, 100);
y1 = sin(x);
y2 = cos(x);
figure;
plot(x, y1, x, y2);
可以设置曲线的样式(颜色,粗细,标记等),例如 1
2
3
4
5
6x = linspace(0, 2*pi, 100);
y = [sin(x); cos(x); tan(x)];
% 绘制多条曲线并指定颜色、线型和线宽
figure;
plot(x, y, 'LineWidth', 2, 'LineStyle', {'--', '-.', ':'}, 'Color', {'r', 'b', 'g'});
我们还可以在曲线图中添加图例 1
legend('sin(x)', 'cos(x)', `tan(x)`);
绘图窗口保持
默认情况下,我们绘制的曲线图呈现在一个绘图窗口中,但是再次调用plot
函数绘图时,MATLAB
会自动清空已打开的绘图窗口,重新绘制。
如果我们在同一窗口中希望把旧图像保持,在此基础上继续绘图,需要使用hold on
命令。hold on
命令会使得当前的绘图窗口的内容保持住,
直到使用hold off
命令或者关闭绘图窗口。例如
1
2
3
4
5
6
7
8
9
10
11
12x = linspace(0,2*pi);
y = sin(x);
figure;
plot(x,y)
hold on
y2 = cos(x);
plot(x,y2)
hold off
多个绘图窗口
我们可以多次调用figure;
语句来创建不同的绘图窗口,分别在其中进行绘图
1 | x = linspace(0, 30); |
多个子图
有很多种方式可以创建子图,下面分别举例。
基于subplot
实现 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21x = linspace(0, 30);
figure;
subplot(2, 2, 1);
plot(x, sin(x));
title('Sine');
subplot(2, 2, 2);
plot(x, cos(x));
title('Cosine');
subplot(2, 2, 3);
plot(x, tan(x));
title('Tangent');
subplot(2, 2, 4);
plot(x, sec(x));
title('Secant');
sgtitle('Trigonometric Functions');
基于titledlayout
实现
1 | t = tiledlayout(2,2); % 2*2的布局 |
保存图片
MATLAB提供了很多种保存绘图的方式,我们重点关注其中的两种:
savefig
保存的是 MATLAB 图形的完整信息,以.fig
格式保存,可在 MATLAB 中重新加载和编辑,但是不能使用图片浏览器打开;saveas
保存的是 MATLAB 图形的静态图像,以具体图片格式保存,如 PNG、EPS、JPEG 等,无法重新编辑。
使用savefig
可以直接保存绘图窗口到文件中,只需要提供文件名
1
2
3
4
5
6
7
8
9x = linspace(0, 30);
figure;
plot(x, sin(x));
title('Sine');
xlabel('x');
ylabel('sin(x)');
savefig("temp.fig")
也可以保存指定的figure
句柄 1
2
3
4
5
6
7
8
9x = linspace(0, 30);
fig1 = figure;
plot(x, sin(x));
title('Sine');
xlabel('x');
ylabel('sin(x)');
savefig(fig1,"temp.fig")
我们可以在MATLAB中直接点击.fig
文件来打开它,也可以在代码中使用openfig
来打开
1
openfig("temp.fig")
使用saveas
可以保存为某个具体的图片格式,例如
1
2fig = openfig('example.fig');
saveas(fig, 'example_saved.png');
或者 1
2
3
4
5
6
7
8
9x = linspace(0, 30);
fig1 = figure;
plot(x, sin(x));
title('Sine');
xlabel('x');
ylabel('sin(x)');
saveas(fig1, 'example_saved.png');
注意:
- 我们必须为
saveas
函数提供figure
句柄; - 保存图片的格式会根据文件后缀名推测,例如
xxx.png
和xxx.jpg
。