Matlab基础篇:绘图与可视化

目录

前言

一、二维绘图

二、图形属性设置

三、多图绘制

四、三维绘图

五、绘图技巧

六、绘图的高级技巧

七、实例示范:绘制多功能图形

八、总结


前言

在数据分析和数学建模中,可视化是一个非常关键的步骤。Matlab 提供了丰富的绘图和可视化工具,可以方便地创建各种类型的图形。本文将详细介绍 Matlab 的绘图与可视化功能,包括二维绘图、三维绘图、多图绘制、图形属性设置等。

一、二维绘图

Matlab 提供了多种函数用于绘制二维图形,如 plotscatterbarpie 等。

  1. plot函数
    • plot 函数用于绘制二维线图。
Matlab 复制代码
    x = 0:0.1:10;        % 创建 x 数据
    y = sin(x);          % 计算 y 数据
    plot(x, y);          % 绘制二维线图
    title('Sin Function'); % 设置标题
    xlabel('x');         % 设置 x 轴标签
    ylabel('sin(x)');    % 设置 y 轴标签
    grid on;             % 打开网格
  1. scatter函数
    • scatter 函数用于绘制二维散点图。
Matlab 复制代码
    x = rand(1, 100);    % x 轴随机数据
    y = rand(1, 100);    % y 轴随机数据
    scatter(x, y, 'filled'); % 绘制二维散点图
    title('Scatter Plot'); % 设置标题
    xlabel('x');         % 设置 x 轴标签
    ylabel('y');         % 设置 y 轴标签
    grid on;             % 打开网格
  1. bar函数
    • bar 函数用于绘制柱状图。
Matlab 复制代码
    x = 1:5;             % 确定 x 轴数据
    y = [10, 20, 30, 25, 15]; % 柱状图高度
    bar(x, y);           % 绘制柱状图
    title('Bar Graph');  % 设置标题
    xlabel('Category');  % 设置 x 轴标签
    ylabel('Values');    % 设置 y 轴标签
    grid on;             % 打开网格

下表总结了常用的二维绘图函数及其示例:

函数 示例 说明
plot plot(x, y); 绘制二维线图
scatter scatter(x, y, 'filled'); 绘制二维散点图
bar bar(x, y); 绘制柱状图
pie pie([10, 20, 30, 40]); 绘制饼图
二、图形属性设置

在 Matlab 中,我们不仅可以绘制图形,还可以自定义图形的各种属性,包括颜色、线型、标记、标题、标签、网格和坐标轴等。

  1. 颜色与线型
    • 可以通过指定颜色和线型来更改图形外观。
Matlab 复制代码
    x = 0:0.1:10;
    y_sin = sin(x);
    y_cos = cos(x);
    plot(x, y_sin, '--r', x, y_cos, ':b'); % 使用 '--r' 和 ':b' 分别指定颜色和线型
    legend('sin(x)','cos(x)');  % 添加图例
  1. 标记
    • 通过 Marker 属性来设置数据点的标记样式。
Matlab 复制代码
    plot(x, y_sin, '-or'); % 使用 '-or' 设置线型和标记
  1. 标题和标签
    • 通过 titlexlabelylabel 等函数来设置标题和轴标签。
Matlab 复制代码
    title('Sin and Cos Functions'); 
    xlabel('x');
    ylabel('Function Values');
  1. 网格与坐标轴
    • 使用 grid 打开或关闭网格,使用 axis 设置坐标轴范围。
Matlab 复制代码
    grid on;   % 打开网格
    axis([0 10 -1.5 1.5]); % 设置坐标轴范围

以下是图形属性设置的常用操作:

操作 示例 说明
设置颜色 plot(x, y, '-r'); 绘制红色线条
设置线型 plot(x, y, '--'); 绘制虚线
设置标记 plot(x, y, 'o'); 使用圆形标记绘制数据点
标题和标签 title('Title'); xlabel('X Axis'); ylabel('Y Axis'); 设置标题和轴标签
网格 grid on; 打开网格
坐标轴范围 axis([xmin xmax ymin ymax]); 设置坐标轴范围
三、多图绘制

Matlab 支持在一个图窗口中绘制多个子图,通过 subplot 函数可以实现这一功能。此外,还可以使用 figure 函数创建多个图窗口。

  1. subplot函数
    • 可以在同一个图窗口中创建多个子图。
Matlab 复制代码
    x = 0:0.1:10;
    y1 = sin(x);
    y2 = cos(x);

    subplot(2, 1, 1); % 创建2行1列的子图,当前是第一个子图
    plot(x, y1);
    title('Sin(x)');

    subplot(2, 1, 2); % 创建2行1列的子图,当前是第二个子图
    plot(x, y2);
    title('Cos(x)');
  1. figure函数
    • 可以创建多个图窗口。
Matlab 复制代码
    figure; % 创建第一个图窗口
    plot(x, y1);
    title('Figure 1: Sin(x)');

    figure; % 创建第二个图窗口
    plot(x, y2);
    title('Figure 2: Cos(x)');

以下是多图绘制的常用操作:

操作 示例 说明
子图 subplot(2, 1, 1); plot(x, y1); 创建2行1列的第一个子图
新窗口 figure; plot(x, y1); 创建新的图窗口
四、三维绘图

Matlab 也支持三维绘图,主要函数有 plot3meshsurf 等。

  1. plot3函数
    • 绘制三维曲线图。
Matlab 复制代码
    t = 0:0.1:10;
    x = sin(t);
    y = cos(t);
    z = t;
    plot3(x, y, z); % 绘制三维曲线
    title('3D Plot');
    xlabel('x');
    ylabel('y');
    zlabel('z');
    grid on;
  1. meshsurf函数
    • 绘制三维网格图和三维表面图。
Matlab 复制代码
    [X, Y] = meshgrid(-3:0.1:3, -3:0.1:3);
    Z = sin(sqrt(X.^2 + Y.^2));
    subplot(1, 2, 1);
    mesh(X, Y, Z); % 绘制三维网格图
    title('Mesh Plot');

    subplot(1, 2, 2);
    surf(X, Y, Z); % 绘制三维表面图
    title('Surface Plot');

以下是三维绘图的常用操作:

操作 示例 说明
三维曲线图 plot3(x, y, z); 绘制三维曲线图
三维网格图 mesh(X, Y, Z); 绘制三维网格图
三维表面图 surf(X, Y, Z); 绘制三维表面图
五、绘图技巧

在绘图过程中,除了基本的绘制功能外,还可以通过一些技巧来美化图形并提高其可读性。以下是一些常用的绘图技巧。

  1. 图例
    • 使用 legend 函数添加图例,帮助说明图中的不同数据系列。
Matlab 复制代码
    x = 0:0.1:10;
    y1 = sin(x);
    y2 = cos(x);
    
    plot(x, y1, '-r', x, y2, '-b');
    legend('sin(x)', 'cos(x)'); % 添加图例
    title('Sin and Cos Functions');
    xlabel('x');
    ylabel('Function Values');
    grid on;
  1. 轴标签和数据标注
    • 使用 xlabel, ylabel, zlabel 添加轴标签,使用 textgtext 函数添加数据标注。
Matlab 复制代码
    plot(x, y1, '-r', x, y2, '-b');
    title('Sin and Cos Functions');
    xlabel('x');
    ylabel('Function Values');
    grid on;

    % 添加数据标注
    text(5, 0, 'sin(5) = 0'); % 在图中指定的位置添加文本
    gtext('cos(x)'); % 在图中通过鼠标点击指定位置添加文本
  1. 图形美化
    • 通过设置字体、线条粗细、颜色等属性来美化图形。
Matlab 复制代码
    plot(x, y1, '-r', 'LineWidth', 2); % 设置线条粗细
    hold on;
    plot(x, y2, '-b', 'LineWidth', 2);
    legend('sin(x)', 'cos(x)'); % 添加图例
    title('Sin and Cos Functions', 'FontSize', 14); % 设置标题字体大小
    xlabel('x', 'FontSize', 12); % 设置 x 轴标签字体大小
    ylabel('Function Values', 'FontSize', 12); % 设置 y 轴标签字体大小
    grid on;
  1. 保存图像
    • 使用 saveasprint 函数保存图形为图像文件。
Matlab 复制代码
    % 假设已经绘制了图形
    saveas(gcf, 'my_plot.png'); % 保存为 PNG 图像
    print('-dpng', 'my_plot.png'); % 保存为 PNG 图像
    print('-depsc', 'my_plot.eps'); % 保存为 EPS 图像

以下是绘图技巧的常用操作总结:

操作 示例 说明
图例 legend('sin(x)', 'cos(x)'); 添加图例
轴标签 xlabel('x'); ylabel('y'); 添加 x 轴和 y 轴标签
数据标注 text(x, y, 'Text'); 在指定位置添加文本
设置字体 xlabel('x', 'FontSize', 12); 设置标签的字体大小
设置线条 plot(x, y, 'LineWidth', 2); 设置线条粗细
保存图像 saveas(gcf, 'file.png'); 将图形保存为图像文件
六、绘图的高级技巧

为了进一步提升数据展示效果,Matlab 还提供了更多高级的绘图技巧,可以用来创建动画和交互式图形,并实现更复杂的图形美化。

  1. 创建动画
    • 通过一系列图形的连续绘制,可以创建动画效果。常用 getframemovie 函数。
Matlab 复制代码
    fig = figure;
    for k = 1:50
        y = sin(2*pi*k/50 * x);
        plot(x, y);
        axis([0 10 -1 1]);
        M(k) = getframe(fig);
    end
    movie(fig, M, 2); % 播放动画,重复播放2次
  1. 交互式图形
    • Matlab 支持交互式图形,可以通过鼠标点击和拖动来调整图形,例如 datacursormode
Matlab 复制代码
    plot(x, y1, '-r', x, y2, '-b');
    title('Sin and Cos Functions');
    xlabel('x');
    ylabel('Function Values');
    grid on;

    % 启用数据提示模式
    datacursormode on;
  1. 复杂图形布局
    • 使用 tiledlayoutnexttile 函数,可以创建复杂的图形布局。
Matlab 复制代码
    t = tiledlayout(2, 2); % 创建2×2网格布局

    % 第一个子图
    nexttile;
    plot(x, y1);
    title('Sin(x)');

    % 第二个子图
    nexttile;
    plot(x, y2);
    title('Cos(x)');

    % 第三个子图
    nexttile;
    plot(x, y1 + y2);
    title('Sin(x) + Cos(x)');

    % 第四个子图
    nexttile;
    plot(x, y1 - y2);
    title('Sin(x) - Cos(x)');

以下是高级绘图技巧的常用操作总结:

操作 示例 说明
创建动画 movie(fig, M, 2); 创建并播放动画
交互式图形 datacursormode on; 启用数据提示模式
复杂图形布局 tiledlayout(2, 2); nexttile; 创建复杂的图形布局
七、实例示范:绘制多功能图形

综合应用以上绘图技巧,下面我们通过一个实际示例展示如何绘制一个包含多种图形和美化功能的图。

Matlab 复制代码
x = 0:0.01:10;
y1 = sin(x);
y2 = cos(x);
y3 = y1 .* y2;

% 创建图形布局
t = tiledlayout(2, 2, 'TileSpacing', 'Compact', 'Padding', 'Compact');

% 第一个子图:sin(x)
nexttile;
plot(x, y1, '-r', 'LineWidth', 2);
title('Sin(x)');
xlabel('x');
ylabel('Sin(x)');
grid on;

% 第二个子图:cos(x)
nexttile;
plot(x, y2, '-b', 'LineWidth', 2);
title('Cos(x)');
xlabel('x');
ylabel('Cos(x)');
grid on;

% 第三个子图:sin(x) * cos(x)
nexttile;
plot(x, y3, '-g', 'LineWidth', 2);
title('Sin(x) * Cos(x)');
xlabel('x');
ylabel('Sin(x) * Cos(x)');
grid on;

% 第四个子图:散点图
nexttile;
scatter(x, y3, 'filled');
title('Scatter Plot');
xlabel('x');
ylabel('Sin(x) * Cos(x)');
grid on;

% 添加统一标题和颜色图例
title(t, 'Multiple Functions and Scatter Plot');
legend(t.Children, 'Sin(x)', 'Cos(x)', 'Sin(x) * Cos(x)', 'Location', 'Best');

% 保存图像
saveas(gcf, 'multi_plot.png');

通过上述代码,我们创建了一个包含四个子图的综合图形,每个子图都展示了不同的数据并进行了美化处理。整个图形布局紧凑,标题和图例也得到了恰当的设置,并最终保存成了图像文件。

八、总结

本文详细介绍了 Matlab 中绘图与可视化的基本功能和技巧,包括二维绘图、三维绘图、图形属性设置、多图绘制、综合绘图技巧,以及最终通过一个综合实例展示如何应用这些技巧。通过这些设置,用户可以灵活地创建各种数据图形,以更直观地展示和分析数据。

相关推荐
smppbzyc1 小时前
2024亚太杯数学建模C题【Development Analyses and Strategies for Pet Industry 】思路详解
数学建模·数学建模竞赛·亚太杯·2024亚太杯数学建模·apmcm亚太杯·2024亚太地区数学建模竞赛·亚太杯c题
热心网友俣先生1 小时前
2024年亚太C题第二版本二问题1求解过程+代码运行以及问题2-4超详细思路分析
数学建模
小何数模2 小时前
24 年第十四届APMCM亚太数模竞赛浅析
数学建模
川川菜鸟5 小时前
2024年亚太地区数学建模C题完整思路
数学建模
2023数学建模国赛比赛资料分享5 小时前
2024亚太杯国际赛C题宠物预测1234问完整解题思路代码+成品参考文章
人工智能·数学建模·宠物·2024亚太杯国际赛数学建模·2024亚太杯国际赛a题·2024亚太杯国际赛数模abc·2024亚太杯数学建模
subject625Ruben1 天前
随机森林(Random Forest, RF)筛选回归数据(处理异常值)
算法·随机森林·数学建模·回归
数维学长9861 天前
《译文》2024年11月数维杯国际大学生数学建模挑战赛题目
数学建模
2023数学建模国赛比赛资料分享1 天前
2024年第十四届APMCM亚太杯数学建模A题B题C题思路+代码解析汇总
数学建模·2024第十四届亚太杯数模·2024亚太杯数学建模国际上·2024亚太杯数学建模国际赛
张焚雪2 天前
关于图论建模的一份介绍
python·数学建模·图论
IT猿手3 天前
多目标优化算法:多目标红嘴蓝鹊优化算法(MORBMO)求解UF1-UF10,提供完整MATLAB代码
开发语言·人工智能·算法·数学建模·matlab·智能优化算法