当前位置: 首页 > news >正文

MATLAB学习文档(二十五)

参考资料:MATLAB 教程新手入门篇——数学建模清风主讲

目录

9.2.5 添加标题和坐标轴的标签

基本语法

标题设置

坐标轴标签设置

参数说明

案例

案例1:基础标签设置

案例2:带属性设置的标签

案例3:使用LaTeX公式

案例4:多行标签

实用技巧

图形句柄操作:可以获取和修改已存在的标签

动态标签:在循环中更新标签

中文支持:确保使用支持中文的字体

9.2.6 修改坐标区的外观

核心语法

方式一:使用 axis 函数(快速设置)

方式二:使用 set 函数(精细控制)

关键参数说明

案例

案例1:设置坐标范围与网格

案例2:自定义刻度与标签

案例3:美化坐标区外观

案例4:反转坐标轴

核心建议

9.2.7 图形窗口上菜单栏和工具栏的介绍

菜单栏介绍

创建菜单栏语法

参数说明

常用属性

案例代码

工具栏介绍

默认工具栏功能

自定义工具栏语法

参数说明

案例代码

菜单栏与工具栏对比总结

注意事项

9.2.8 在同一个图形窗口上绘制多个子图

核心语法:subplot

基本语法

参数说明

案例

建议

9.2.9 将绘制好的图形保存到本地

核心语法:saveas 函数

基本语法

参数说明

案例

高级语法:print 函数

基本语法

参数说明

案例

交互式方法:图形窗口菜单

建议

9.2.10 “傻瓜式” 绘图方法

核心语法:plot 函数

基本语法

参数说明

案例

建议


9.2.5 添加标题和坐标轴的标签

功能

语法

常用属性组合

适用场景

简单标题

title(‘文本’)

快速标注

格式化标题

title(‘文本’,‘FontSize’,12)

FontSize, FontWeight, Color

需要强调的标题

数学公式标题

title(‘公式’,‘Interpreter’,‘latex’)

Interpreter, FontSize

学术论文图表

坐标轴标签

xlabel(‘文本’)

FontSize, Color

基本标注

旋转标签

ylabel(‘文本’,‘Rotation’,0)

Rotation, FontSize

横向Y轴标签

多行标签

title({‘1’;‘2’})

复合信息标注

基本语法
标题设置
title('字符串标题')title('字符串标题','属性名',属性值,...)
坐标轴标签设置
xlabel('字符串标签')xlabel('字符串标签','属性名',属性值,...)ylabel('字符串标签')ylabel('字符串标签','属性名',属性值,...)
参数说明

属性名

可选值

说明

‘FontSize’

数值(12)

字体大小

‘FontWeight’

‘normal’/‘bold’

字体粗细

‘Color’

颜色字符/RGB

字体颜色

‘Interpreter’

‘none’/‘latex’/‘tex’

文本解释器

‘Rotation’

角度值(90)

文本旋转角度

案例
案例1:基础标签设置
x = 0:0.1:2*pi;y = sin(x);plot(x,y)title('正弦函数图像')xlabel('时间(秒)')ylabel('幅值')
案例2:带属性设置的标签
x = linspace(0,10,100);y = exp(-x).*sin(x);plot(x,y,'r-','LineWidth',2)title('衰减振荡曲线','FontSize',14,'FontWeight','bold')xlabel('时间 t','FontSize',12,'Color','b')ylabel('位移 y','FontSize',12,'Color','b')
案例3:使用LaTeX公式
x = -2:0.1:2;y = x.^2;plot(x,y)title('二次函数 $y = x^2$','Interpreter','latex')xlabel('自变量 $x$','Interpreter','latex')ylabel('因变量 $y$','Interpreter','latex')
案例4:多行标签
x = 1:10;y = rand(1,10);plot(x,y,'o-')title({'实验数据点';'2025年测量'})xlabel('样本编号')ylabel('测量值')
实用技巧
图形句柄操作:可以获取和修改已存在的标签
h_title = get(gca,'Title');set(h_title,'String','新标题','Color','red')
动态标签:在循环中更新标签
for i = 1:5plot(rand(1,10))title(['第',num2str(i),'次实验'])pause(1)end
中文支持:确保使用支持中文的字体
title('中文标题','FontName','SimHei')

9.2.6 修改坐标区的外观

目标

推荐语法

常用属性组合

适用场景

快速调整范围

axis([xmin xmax ymin ymax])

初步查看数据局部细节

统一比例

axis equal  axis square

绘制圆形、几何图形,确保不变形

显示网格

set(gca, 'XGrid', 'on', 'YGrid', 'on')

GridLineStyleGridAlpha

数据对比,读数辅助

自定义刻度

set(gca, 'XTick', ..., 'XTickLabel', ...)

YTickYTickLabel

展示分类数据、特定时间点

整体美化

set(gca, ...)

ColorBoxLineWidthXColorFontSize

学术论文、报告、演示文稿

特殊方向

set(gca, 'YDir', 'reverse')

XDir

深度数据、自上而下的流程图

核心语法

修改坐标区外观主要通过 axis 和 set(gca, ...) 两种方式实现。

方式一:使用 axis 函数(快速设置)
axis([xmin xmax ymin ymax])       % 设置坐标范围axis square                       % 使坐标区呈正方形axis equal                        % 使各坐标轴刻度增量相同axis tight                        % 紧凑显示数据范围axis off                          % 关闭坐标轴背景和刻度axis on                           % 显示坐标轴背景和刻度axis xy                           % 使用标准的笛卡尔坐标系axis ij                           % 使用矩阵坐标系(原点在左上角)
方式二:使用 set 函数(精细控制)
set(gca, 'PropertyName', PropertyValue, ...)% gca 代表 "get current axes",即获取当前坐标区的句柄
关键参数说明

属性名 (PropertyName)

可选值/类型

说明

XLimYLim

[最小值, 最大值]

设置XY轴的显示范围

XTickYTick

向量,如 [0, 2, 4, 6]

设置主刻度线的位置

XTickLabelYTickLabel

字符串元胞数组

设置刻度标签的文本

XGridYGrid

on / off

是否显示XY轴的网格线

Box

on / off

是否显示坐标区的边框

Color

颜色字符 ( 'w') RGB

设置坐标区的背景颜色

XColorYColor

颜色字符或RGB

设置XY轴线的颜色

LineWidth

数值(如 1.5

设置坐标轴线的宽度

FontName

字符串(如 'Times New Roman'

设置刻度标签的字体

FontSize

数值(如 12

设置刻度标签的字体大小

Dir

'normal''reverse'

设置坐标轴方向(正向或反向

案例
案例1:设置坐标范围与网格
x = linspace(0, 10, 100);y = sin(x) + 0.5*randn(size(x));plot(x, y);% 使用 axis 快速设置范围axis([0 12 -2 2]); % X轴[0,12], Y轴[-2,2]% 使用 set 精细控制set(gca, 'XGrid', 'on', 'YGrid', 'on', 'GridLineStyle', '--', 'GridAlpha', 0.5);title('带网格和自定义范围的信号图');
案例2:自定义刻度与标签
x = 1:5;y = [10, 25, 8, 30, 15];plot(x, y, '-o');% 自定义刻度位置和标签set(gca, 'XTick', 1:5, ...'XTickLabel', {'样本A', '样本B', '样本C', '样本D', '样本E'}, ...'YTick', 0:5:35);title('自定义刻度标签示例');
案例3:美化坐标区外观
x = linspace(0, 2*pi, 100);y = cos(x);plot(x, y, 'LineWidth', 2);% 综合美化set(gca, 'Color', [0.95 0.95 0.95], ...  % 浅灰色背景'Box', 'on', ...                   % 显示边框'LineWidth', 1.2, ...              % 坐标轴线加粗'XColor', [0.2 0.2 0.2], ...       % 深灰色轴线'YColor', [0.2 0.2 0.2], ...'FontSize', 12, ...                % 字体加大'FontName', 'Arial');title('美化后的坐标区');
案例4:反转坐标轴
x = 1:100;y = cumsum(randn(1,100));plot(x, y);% 反转Y轴,常用于深度或某些递减指标set(gca, 'YDir', 'reverse');title('Y轴反向示例(如深度剖面)');
核心建议
  • 快速操作用 axis,精细定制用 set(gca, ...)。
  • 在编写脚本时,将所有 set 命令集中在 plot 命令之后,代码结构更清晰。

9.2.7 图形窗口上菜单栏和工具栏的介绍

菜单栏介绍

MATLAB图形窗口的菜单栏默认包含“文件”“编辑”“视图”“插入”“工具”“桌面”“窗口”“帮助”等选项,用户可通过uimenu函数自定义菜单。

创建菜单栏语法
h = uimenu(parent, 'PropertyName', PropertyValue, ...);
参数说明

parent:父对象句柄(如图形窗口gcf或父菜单句柄)。

'PropertyName':属性名(如'Label'、'Callback')。

PropertyValue:属性值(如菜单项名称、回调函数)。

常用属性

属性名

说明

示例值

'Label'

菜单项名称(支持&定义快捷键)

'文件(&F)'

'Callback'

点击菜单项执行的命令或函数

'plot(rand(10))'

'Separator'

是否在菜单项上方添加分割线('on'/'off'

'on'

'Checked'

是否显示选中标记('on'/'off'

'on'

'Enable'

是否启用菜单项('on'/'off'

'off'

案例代码
% 创建图形窗口并隐藏默认菜单fig = figure('Name', '自定义菜单', 'MenuBar', 'none');% 添加一级菜单h_file = uimenu(fig, 'Label', '文件');h_edit = uimenu(fig, 'Label', '编辑');% 添加子菜单uimenu(h_file, 'Label', '保存', 'Callback', 'saveas(gcf)');uimenu(h_file, 'Label', '打开', 'Separator', 'on', 'Callback', 'uigetfile');uimenu(h_edit, 'Label', '复制', 'Callback', 'disp("复制操作")');
工具栏介绍

MATLAB图形窗口的工具栏提供快捷操作按钮,如放大、平移、数据游标等,用户可通过uitoolbar自定义工具栏。

默认工具栏功能

功能按钮

说明

放大/缩小

缩放图形

平移

拖动图形

数据游标

显示数据点坐标

插入图例

添加图例

插入颜色栏

添加颜色标尺

自定义工具栏语法
h_toolbar = uitoolbar(parent);h_push = uipushtool(h_toolbar, 'CData', icon, 'TooltipString', '提示', 'ClickedCallback', callback);
参数说明

parent:父对象(如图形窗口)。

'CData':按钮图标(矩阵或图像)。

'TooltipString':鼠标悬停提示文本。

'ClickedCallback':点击按钮执行的回调函数。

案例代码
% 创建工具栏并添加按钮h_toolbar = uitoolbar(gcf);icon = imread('icon.png'); % 加载图标uipushtool(h_toolbar, 'CData', icon, 'TooltipString', '绘制正弦波', ...'ClickedCallback', 'plot(sin(0:0.1:2*pi))');
菜单栏与工具栏对比总结

特性

菜单栏

工具栏

用途

分类操作(如文件、编辑)

快捷操作(如缩放、标注)

创建函数

uimenu

uitoolbar + uipushtool

交互方式

下拉菜单

按钮点击

自定义性

支持多级菜单、分隔线、快捷键

支持图标、提示文本

适用场景

复杂功能分组

常用功能快速访问

注意事项
  • 隐藏默认菜单:需设置'MenuBar', 'none'。
  • 回调函数:建议封装为独立函数或脚本,便于维护。
  • 图标资源:自定义工具栏按钮需准备图标文件(如PNG)。

9.2.8 在同一个图形窗口上绘制多个子图

方法/语法

特点

适用场景

关键点

subplot(m, n, p)

创建规则的mn列网格,在第p个位置绘图。

标准的多图对比展示,如2x23x1等。

p的计数从左到右,从上到下。

subplot(m, n, p) (不规则)

通过p的巧妙组合,让子图跨越多个网格。

需要突出某个主图,或创建不对称布局。

例如subplot(2,1,1)创建一个占满上方的大图。

h = subplot(...)

创建子图的同时,返回其句柄h

需要对特定子图进行精细、独立的属性定制。

通过set(h, 'Property', Value)修改属性。

核心语法:subplot

subplot 是创建子图最核心的函数,它将图形窗口划分为一个网格,并指定当前绘图的位置。

基本语法
subplot(m, n, p)
参数说明

参数

说明

m

将窗口划分成的行数。

n

将窗口划分成的列数。

p

指定当前激活的子图区域编号。编号从左上角开始,从左到右、从上到下依次为 1, 2, 3, …

案例

案例1:规则网格布局(2x2布局)

这是最常用的方式,创建一个2行2列的网格来放置4个子图。

% 准备数据x = 0:0.1:2*pi;y1 = sin(x);y2 = cos(x);y3 = x.^2;y4 = exp(-x);% 创建2x2的子图subplot(2, 2, 1); % 激活第1个区域(左上角)plot(x, y1);title('正弦函数');subplot(2, 2, 2); % 激活第2个区域(右上角)plot(x, y2);title('余弦函数');subplot(2, 2, 3); % 激活第3个区域(左下角)plot(x, y3);title('二次函数');subplot(2, 2, 4); % 激活第4个区域(右下角)plot(x, y4);title('指数衰减');

案例2:不规则布局(占据多个网格)

有时候,我们希望某个子图更大,占据多个网格位置。

% 准备数据x = linspace(0, 10, 100);y1 = sin(x);y2 = cos(x);y3 = sin(x) + cos(x);% 第一个子图占据上方全部空间(2行1列的第1个位置)subplot(2, 1, 1);plot(x, y1, 'r-', 'LineWidth', 2);title('主图:正弦波');grid on;% 第二和第三个子图并排放在下方subplot(2, 2, 3); % 下方左侧plot(x, y2, 'b--');title('子图1:余弦波');subplot(2, 2, 4); % 下方右侧plot(x, y3, 'g:');title('子图2:正弦+余弦');

案例3:获取子图句柄进行高级控制

在复杂的图形定制中,我们可能需要获取每个子图的句柄,以便后续单独修改其属性(如字体、颜色等)。

% 准备数据x = 0:0.1:pi;y1 = sin(x);y2 = cos(x);% 创建子图并获取其句柄h1 = subplot(1, 2, 1); % 获取第一个子图的句柄h1plot(x, y1);title('子图A');h2 = subplot(1, 2, 2); % 获取第二个子图的句柄h2plot(x, y2);title('子图B');% 使用句柄进行后续定制set(h1, 'FontSize', 12, 'XColor', 'r'); % 修改第一个子图的字体和X轴颜色set(h2, 'YGrid', 'on', 'GridAlpha', 0.5); % 给第二个子图添加半透明网格线
建议
  • 避免过度拥挤:子图太多会让图形难以阅读。如果超过4个,考虑创建多个图形窗口或使用交互式工具。
  • 统一风格:在同一个窗口中的多个子图,尽量保持坐标轴范围、字体大小、颜色方案等风格的一致性。
  • 善用标题:为每个子图添加清晰的标题,是确保信息准确传达的关键。

9.2.9 将绘制好的图形保存到本地

方法

语法示例

优点

缺点

适用场景

关键参数/备注

saveas函数

saveas(gcf, 'myplot.png')

语法简单,直观易用。

对图片质量(如分辨率)的控制能力较弱。

快速、常规的图形保存。

formattype 可指定 ‘png’, ‘jpg’, ‘pdf’, ‘fig’ 等。

print函数

print(gcf, 'myplot', '-dpng', '-r300')

功能强大,可精确控制分辨率、渲染器、背景色等。

语法相对复杂。

对图片质量有高要求的场景,如学术论文、出版物。

-dformat 指定格式,-rN 设置分辨率(Ndpi值)。

交互式菜单

在图形窗口点击 文件 -> 另存为...

无需编写代码,可视化操作,非常方便。

无法实现自动化,不适用于脚本化工作流。

一次性、探索性的绘图保存。

支持多种格式,可在保存对话框中设置选项。

核心语法:saveas 函数

saveas 是最直接、最简单的保存函数,它将图形窗口(Figure)的内容保存为文件。

基本语法
saveas(fig, filename)saveas(fig, filename, formattype)
参数说明

参数

描述

fig

要保存的图形对象的句柄。gcf (Get Current Figure) 是一个常用快捷方式,代表当前活动的图形窗口。

filename

字符串,指定保存的文件名(可以包含路径)。

formattype

可选,字符串,指定保存的文件格式。如果省略,MATLAB会根据filename的扩展名推断。

案例

案例1:保存为PNG图片(默认分辨率)

x = linspace(0, 2*pi, 100);y = sin(x);plot(x, y);title('正弦函数图像');% 将当前图形保存为 'sine_plot.png'saveas(gcf, 'sine_plot.png');

案例2:明确指定格式保存为PDF

x = linspace(0, 2*pi, 100);y = cos(x);plot(x, y, 'r--', 'LineWidth', 2);title('余弦函数图像');% 将当前图形保存为 'cosine_plot.pdf'saveas(gcf, 'cosine_plot.pdf', 'pdf');

案例3:保存为可再次编辑的FIG文件

% ... 绘图代码 ...% 将当前图形保存为 'my_raw_data.fig'saveas(gcf, 'my_raw_data.fig', 'fig');% 这个文件以后可以在MATLAB中打开,并继续编辑所有图形元素
高级语法:print 函数

当你需要更精细地控制输出质量,特别是设置分辨率时,print 函数是更强大的选择。

基本语法
print(fig, filename, formattype)print(fig, filename, '-r分辨率', formattype)
参数说明

参数

描述

fig

图形句柄,通常使用 gcf

filename

保存的文件名。

formattype

图像格式,如 -dpng-djpeg-dtiff-dpdf-dsvg 等。注意前面的 -d

-r分辨率

关键参数!用于设置图像的分辨率(DPI,每英寸点数)。例如 -r300 表示300 DPI

案例

案例4:保存高分辨率PNG(适合论文发表)

x = linspace(0, 10, 200);y = exp(-x/10) .* sin(x);plot(x, y);title('衰减振荡');% 将当前图形以300 DPI的分辨率保存为 'high_res_plot.png'print(gcf, 'high_res_plot.png', '-dpng', '-r300');

案例5:保存为矢量图PDF(无限缩放不失真)

% ... 绘图代码 ...% 将当前图形保存为矢量PDF,非常适合打印和学术出版print(gcf, 'vector_plot.pdf', '-dpdf', '-r600'); % -r600对PDF也有效果
交互式方法:图形窗口菜单

对于偶尔的、非脚本化的保存,直接使用图形窗口的菜单是最直观的。

在图形窗口中,点击菜单栏的 "File" -> "Save As..."。

在弹出的对话框中,选择你想要保存的路径、文件名和文件类型(如PNG、PDF、JPEG等)。

点击"保存"即可。  

建议
  • 报告与论文首选:对于需要插入Word或LaTeX的报告,PDF格式是最佳选择,因为它是矢量图,无论放大多少倍都保持清晰。如果必须用位图,请使用PNG格式并设置足够高的分辨率(如300dpi)。
  • 保留可编辑文件:在保存最终图片的同时,建议使用 saveas(gcf, 'myplot.fig') 保存一个 .fig 文件。这是MATLAB的原生格式,你可以随时重新打开它,修改标题、坐标轴、线条样式等所有内容,非常方便。
  • 脚本化工作流:当你的分析涉及生成大量图表时(比如分析不同乡镇的调研数据),务必在脚本中使用 saveas 或 print 函数实现自动化保存,这会极大提高你的工作效率。

9.2.10 “傻瓜式” 绘图方法

语法

参数说明

优点

缺点

适用场景

案例

plot(Y)

Y:数据向量

极其简单,无需准备X轴数据

X轴无实际物理意义,仅为索引

快速查看单变量数据的序列分布

plot([1, 3, 2, 5]);

plot(X, Y)

XX轴数据向量
YY轴数据向量

最常用,XY对应关系明确

需要准备两组长度相同的数据

绘制具有明确自变量和因变量的关系图

plot(time, data);

plot(X, Y_matrix)

XX轴数据向量
Y_matrixY轴数据矩阵

一条命令绘制多条线,自动配色

需要将多组Y数据组织成矩阵

在同一坐标系下对比多组数据的变化趋势

plot(time, [data1; data2]');

核心语法:plot 函数

plot 函数是MATLAB二维绘图的基础,它的设计理念就是“你给我数据,我给你图形”。

基本语法
plot(Y)plot(X, Y)
参数说明

参数

描述

Y

一个向量。MATLAB会将Y的每个元素作为Y坐标,而它们的索引(1, 2, 3...)会自动作为X坐标。

X

一个向量,提供X轴坐标。

Y

一个向量,提供Y轴坐标。X和Y的长度必须相同。

案例

案例1:最“傻瓜”的方式 —— 只给Y数据

如果你只有一组数据,想看看它的走势,直接把数据扔给 plot 就行。

% 假设这是你调研中记录的某种认知指数随时间的变化cognition_index = [5, 6, 8, 7, 9, 12, 11, 15];plot(cognition_index);title('认知指数变化趋势'); % 加个标题让图更清晰

案例2:最常用的方式 —— 给出X和Y数据

通常你的数据是成对出现的,比如时间和对应的测量值。

% 假设这是调研的8个时间点(单位:周)time_points = 1:8;% 对应的认知指数cognition_index = [5, 6, 8, 7, 9, 12, 11, 15];plot(time_points, cognition_index);title('认知指数随时间变化');xlabel('时间 (周)');ylabel('认知指数');

案例3:同时绘制多条线

想在一张图里对比不同群体的数据?plot 也能轻松搞定。

time_points = 1:8;% 群体A的认知指数group_A = [5, 6, 8, 7, 9, 12, 11, 15];% 群体B的认知指数group_B = [3, 5, 6, 8, 7, 9, 10, 12];% 将X和两组Y数据以矩阵形式传入plot(time_points, [group_A; group_B]');title('两个群体认知指数对比');xlabel('时间 (周)');ylabel('认知指数');legend('群体A', '群体B'); % 加个图例区分一下
建议
  • 快速探索:在数据分析初期,用 plot(Y) 快速查看数据分布,帮你快速发现异常值或大致趋势。
  • 标准作图:在正式报告中,99%的情况都应该使用 plot(X, Y),确保坐标轴标签清晰,信息准确。
  • 对比分析:plot(X, Y_matrix) 是最高效的选择。
http://www.dtcms.com/a/498938.html

相关文章:

  • 告别“静态”VI手册:InDesign与AE打造可交互的动态品牌规范
  • 推广网站有那些个人网站免费域名注册
  • Windows EXCEPTION_RECORD 结构深度解析
  • LangGraph学习笔记(四):langgraph本地的流式输出
  • Phoenix Code:一款专为Web开发打造的开源文本编辑器
  • 网络营销的基本特征有哪七个wordpress宝塔优化
  • pyvideotrans问题
  • Large-scale CelebFaces Attributes (CelebA) 数据集生态:核心详解、免费下载与三大扩展应用全景​
  • 【BuildFlow 筑流】品牌命名与项目定位说明
  • PHP 8.0+ 现代Web开发实战指南 引
  • 沈阳有什么网站浙江网架公司
  • 零基础学AI大模型之RAG技术
  • 【论文速递】2025年第30周(Jul-20-26)(Robotics/Embodied AI/LLM)
  • Photoshop修图
  • R 矩阵:解析与应用
  • java.io 包详解
  • 整体设计 逻辑系统程序 之34七层网络的中台架构设计及链路对应讨论(含 CFR 规则与理 / 事代理界定)
  • Vue3 项目创建实战:Vue CLI 与 Vite 深度对比与操作指南
  • C++|手写shared_ptr实现
  • Python 数据分析入门:Pandas vs NumPy 全方位对比
  • 学做网站能赚钱吗信息平台网站模板
  • Redis为什么是单线程的
  • layuiadmin与laravel 12 前后端分离nginx配置
  • IDEA在文件中查找快捷键失效
  • 整合知识图谱与大语言模型:下一代药物发现的革命性技术
  • 详解TCP(详细版)
  • TCMalloc原理解析(上)
  • OpenCV深度学习:目标检测、人脸识别与智能视频分
  • 电子商务网站有哪些内容wordpress漏洞2019
  • FileNotFoundError: [WinError 3] 系统找不到指定的路径。