第四章 MATLAB作图基础
文章目录
前言
在数据分析和科学计算中,二维图形是展示数据结果的重要手段。MATLAB提供了丰富的绘图函数和工具,帮助我们快速创建各种类型的图形。在本节中,我们将介绍如何使用MATLAB进行二维图形的绘制,包括基本绘图函数的使用、图形属性的设置、标题、坐标轴标签和图例的添加,以及子图的绘制。
一、基础绘图
1.基本绘图函数的使用
基本绘图函数有很多种,例如plot、semilogx、semilogy,本小节介绍下各种绘图函数的使用。
1.1 plot函数
MATLAB中最常用的基本绘图函数是plot,它用于绘制二维线图。例如,要绘制一组数据点(x, y),可以使用以下代码:
>> x = 0:0.01:2*pi; % 创建一个从0到2π的向量,步长为0.01
y = sin(x); % 计算每个x对应的y值(正弦函数)
plot(x, y); % 绘制图形
>>
下图为生成的图像:
>> x = 0:0.1:2*pi; % 创建一个从0到2π的向量,步长为0.1
>> y = sin(x); % 计算每个x对应的y值(正弦函数)
>> bar(x, y); % 绘制柱形图
除了plot函数外,还要stem(针状图),bar(柱形图)等各种基础绘图函数,使用都如下所示。MATLAB还提供了semilogx和semilogy函数,它们分别用于绘制X轴或Y轴为对数刻度的图形。这在处理范围广泛的数据时非常有用。
将上述中生成图像的函数由bar改为stem,就生成了针状图
>> x = 0:0.1:2*pi; % 创建一个从0到2π的向量,步长为0.1
>> y = sin(x); % 计算每个x对应的y值(正弦函数)
>> stem(x, y); % 绘制针形图
在使用中,根据数据的特性或者问题的需求,可以自己选择适当的函数进行图形的绘制,所谓数形结合,才能将问题解释的更加形象与清楚,作图是在写数模论文中必不可少的一项工作内容,这部分的函数以及使用还是希望大家能够熟练使用,牢记于心。
1.2图形属性的设置
在MATLAB中,可以通过各种属性来定制图形的外观。例如,可以使用LineSpec(线条样式)参数来改变线条的样式、颜色和标记。以下是一些常用的LineSpec选项:
- 线条样式:-(实线)、–(虚线)、:(点线)、-.(点划线)
- 线条颜色:r(红色)、g(绿色)、b(蓝色)、c(青色)、m(洋红色)、y(黄色)、k(黑色)、w(白色)
- 标记样式:.(点)、o(圆圈)、x(叉号)、+(加号)、*(星号)、s(正方形)、d(菱形)、^(上三角)、v(下三角)、>(右三角)、<(左三角)、p(五角星)、h(六边形)
以下是一个设置线条样式、颜色和标记的示例:
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y, 'r--o'); % 红色虚线,带有圆圈标记
1.3图形标题、坐标轴标签和图例的添加
为了增强图形的可读性,可以为其添加标题、坐标轴标签和图例。这可以通过title、xlabel、ylabel和legend函数来实现。以下是一个示例:
>> x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(x, y1, 'r--', x, y2, 'b-*'); % 同时绘制两条线,分别设置不同的样式
title('正弦和余弦函数'); % 添加标题
xlabel('x'); % 添加X轴标签
ylabel('y'); % 添加Y轴标签
legend('sin(x)', 'cos(x)'); % 添加图例
1.4子图的绘制(使用subplot函数)
当需要在同一个窗口中绘制多个图形时,可以使用subplot函数来创建子图。subplot函数的第一个参数指定了子图的行数,第二个参数指定了子图的列数,第三个参数指定了当前激活的子图的索引(从左上角开始计数,按行优先)。
以下是一个subplot函数使用的示例:
>> x = 0:0.01:2*pi;
y1 = sin(x);
y2 = cos(x);
% 第一个子图
subplot(2, 1, 1); % 2行1列,当前是第1个子图
plot(x, y1);
title('正弦函数');
% 第二个子图
subplot(2, 1, 2); % 2行1列,当前是第2个子图
plot(x, y2);
title('余弦函数');
在这个示例中,我们创建了一个包含两个子图的窗口,分别绘制了正弦函数和余弦函数的图形。
二、三维绘图
1.三维图形函数
在数据可视化中,三维图形能够为我们提供更为直观和深入的数据理解。MATLAB 提供了一系列用于绘制三维图形的函数,包括 plot3、surf、mesh 和 scatter3 等。以下是对这些函数的简要介绍和示例。
- 三维曲线图(plot3函数)
plot3 函数用于在三维空间中绘制曲线。它接受三个向量作为输入,分别代表 x、y 和 z 坐标。
% 创建数据
x = linspace(0, 2*pi, 100);
y = sin(x);
z = cos(x);
% 绘制三维曲线图
figure;
plot3(x, y, z, 'LineWidth', 2);
grid on;
xlabel('X');
ylabel('Y');
zlabel('Z');
title('三维曲线图');
- 三维曲面图(surf、mesh函数)
surf 和 mesh 函数用于绘制三维曲面图。它们接受两个二维矩阵作为输入,分别代表 x-y 平面的坐标网格和对应的高度值(z 坐标)。
- surf 函数生成带有颜色的平滑曲面。
- mesh 函数生成带有网格线的曲面。
% 创建数据网格
[X, Y] = meshgrid(-10:0.5:10, -10:0.5:10);
Z = sin(sqrt(X.^2 + Y.^2));
% 绘制三维曲面图(surf)
figure;
surf(X, Y, Z);
colorbar;
title('三维曲面图(surf)');
% 绘制三维曲面图(mesh)
figure;
mesh(X, Y, Z);
title('三维曲面图(mesh)');
- 三维散点图(scatter3函数)
scatter3 函数用于在三维空间中绘制散点图。它接受三个向量作为输入,分别代表 x、y 和 z 坐标,并允许你指定点的颜色、大小和形状。
% 创建数据
x = randn(100, 1);
y = randn(100, 1);
z = randn(100, 1);
% 绘制三维散点图
figure;
scatter3(x, y, z, 'filled');
grid on;
xlabel('X');
ylabel('Y');
zlabel('Z');
title('三维散点图');
在上面的示例中,我们使用了 randn 函数生成了随机的 x、y 和 z 坐标,并使用 scatter3 函数绘制了三维散点图。通过设置 ‘filled’ 参数,我们使得每个点都被填充了颜色。
三、图形交互操作
1.图形窗口的放大、缩小和旋转。
在 MATLAB 中,可以通过多种方式来放大、缩小和旋转图形窗口。这些操作通常依赖于鼠标交互,但也可以通过编程命令来实现。不过为了方便,我们一般是使用鼠标交互的方式来观测图像,使用命令的方式一般是在代码中使用,用来批量或者动态的生成不同的图片。
- 放大和缩小
- 鼠标交互:使用鼠标滚轮可以放大或缩小图形。另外,在图形窗口中按下鼠标左键并拖动可以创建一个矩形区域来放大该区域。
- 编程命令:可以使用 axis 函数来改变坐标轴的范围,从而放大或缩小图形。例如,axis([xmin xmax ymin ymax]) 会设置 x 和 y 轴的范围。
- 旋转
- 3D 图形:对于 3D 图形,可以使用鼠标在图形窗口中按下右键并拖动来旋转图形。这种旋转是交互式的,并且可以通过鼠标操作实时改变视角。
- 编程命令:对于更高级的控制,可以使用 view 函数来设置 3D 图形的视角。例如,view(az, el) 会设置方位角 az 和仰角 el,从而改变图形的视角。
2.数据点的选择和查询。
- 数据点的选择和查询
在 MATLAB 中,可以通过一些工具和技术来选择和查询图形上的数据点。
2.1数据点选择
- 图形交互:对于散点图(如 scatter 或 scatter3)或线图(如 plot 或 plot3),可以使用 ginput 函数来选择图形上的点。这个函数会返回一个坐标数组,其中包含所选点的 x 和 y(或 z)坐标。
- 当输入input指令时,图像中会出现十字架形状可移动的选择器,
- 移动鼠标选择图形上的点,然后点击一下,再移动,输入回车键。窗口就会显示用鼠标选中的数据点的坐标值。下图为选择点击了两次后回车的结果:
- 数据游标:在图形窗口中,可以使用数据游标(Data Cursor)来查询特定点的数据。在图形上单击鼠标右键并选择“Data Cursor”选项,然后将游标移动到感兴趣的点上,即可显示该点的坐标和(如果可用)数据值。
2.2数据查询
- 文本标注:可以使用 text 函数在图形上添加文本标注,以显示特定点的数据值。例如,可以使用循环遍历数据点,并在每个点上添加包含其坐标和值的文本标注。
- 表格显示:如果图形包含大量数据点,并且需要频繁查询这些数据点,那么将数据导出到表格中可能更为方便。可以使用 MATLAB 的表格处理功能(如 table 函数和 writetable 函数)来实现这一点。
3.图形数据的导出。
3.1 图形数据的导出
MATLAB 提供了多种方法来导出图形和图形数据。
- 图形导出
保存为图像文件:可以使用 MATLAB 的图形导出功能将图形保存为图像文件(如 PNG、JPEG、PDF 等)。这可以通过图形窗口的“文件”菜单中的“另存为”选项来完成,或者使用 saveas 函数来实现。
复制为图像:在图形窗口中,可以选择“编辑”>“复制图形”来将图形复制到剪贴板中,然后将其粘贴到其他应用程序中。
- 数据导出
将数据保存到工作区变量:MATLAB 中的图形通常基于工作区中的变量创建的。因此,可以直接将这些变量保存到 MATLAB 的 .mat 文件中,以供将来使用或与其他 MATLAB 用户共享。
将数据导出到其他格式:如果需要将数据导出到 Excel、CSV 或其他外部文件格式中,可以使用 MATLAB 的文件 I/O 函数(如 writetable、csvwrite 等)来实现。这些函数可以将 MATLAB 数组或表格导出为外部文件,以便在其他应用程序中打开和查看。
四、总计
好啦,以上就是matlab初级教程第四课要讲的内容,本文仅仅简单介绍了matlab里的基础绘图与三维绘图函数的使用,以及图窗属性与交互,图像的保存与导出,请继续学习后面的高级图像用法哦,后面我们可以用来生成动态图以达到动画的效果。