MATLAB 绘图 | 基础指令与函数、线条字体配色、标注图例

注:本文为 "MATLAB 绘图" 相关合辑。

图片清晰度受引文原图所限。

略作重排,未整理去重。

如有内容异常,请看原文。


MATLAB 绘图基础操作大全

小易吾 2023-06-08 10:50:50

本文讲解 MATLAB 基础绘图操作,包含颜色、线型、标记符号配置,散点图、折线图绘制,以及图例、标题、坐标轴、网格线、多图布局等功能实现。

一、颜色标识表

符号 颜色
r 红色
g 绿色
b 蓝色
c 青绿色
m 粉红色
y 黄色
k 黑色
w 白色

二、线条与标记符号

标记符号

符号 含义
+ 加号
o 空心圆
* 星号
x 叉号
d 菱形
^ 上三角形
p/pentagram 五角星
h/hexagram 六边形
s/square 正方形

线型符号

符号 含义
- 实线(默认)
-- 虚线
: 点线
-. 点划线

三、散点图绘制

仅使用标记、不配置线型,即可生成散点图:

matlab 复制代码
x1 = [50 60 70 80 90 96];
y1_A = [1.0159 1.2227 1.2755 1.2845 1.4111 1.5173];
plot(x1,y1_A,'*');

四、折线图绘制

在线型标识后搭配标记符号,绘制带标记的折线图:

matlab 复制代码
x1 = [50 60 70 80 90 96];
y1_A = [1.0159 1.2227 1.2755 1.2845 1.4111 1.5173];
plot(x1,y1_A,'-*');

五、图例、坐标轴、标题设置

1 图例

matlab 复制代码
x1 = [50 60 70 80 90 96];
y1_A = [1.0159 1.2227 1.2755 1.2845 1.4111 1.5173];
y1_B = [1.7478 1.9648 2.1945 2.8580 3.0087 3.2728];
plot(x1,y1_A,'-*','color','b','MarkerSize',8);
hold on
plot(x1,y1_B,'-o','color','g','MarkerSize',8);
legendText = legend('图例 1','图例 2','FontSize', 10,'FontName','宋体');

2 坐标轴范围与刻度

matlab 复制代码
set(gca,'XLim',[-50 50]);        % 横轴显示范围
set(gca,'XTick',[-50:10:50]);    % 横轴刻度间隔
set(gca,'YLim',[0 100]);         % 纵轴显示范围
set(gca,'YTick',[0:10:100]);     % 纵轴刻度间隔

3 图形标题

matlab 复制代码
plot(x, y, 'r')
title('这是绘制的曲线');

4 坐标轴标签

matlab 复制代码
xlabel('x 轴的名称');
ylabel('y 轴的名称');
axis([xmin xmax ymin ymax]);  % 统一设置轴范围

六、网格线设置

  1. 显示主网格:grid on
matlab 复制代码
x = 1:10;
y = rand(1,10);
plot(x,y);
grid on;
  1. 显示主次网格:grid on + grid minor
matlab 复制代码
x = 1:10;
y = rand(1,10);
plot(x,y);
grid on
grid minor
  1. 隐藏网格:不添加网格指令 或 执行 grid off
  2. 单向网格显示:
matlab 复制代码
x = 1:10;
y = rand(1,10);
plot(x,y);
ax = gca;
ax.XGrid = 'off';
ax.YGrid = 'on';

七、同图多曲线与多图窗

1 同一坐标系绘制多条曲线

使用 hold on 叠加绘图:

matlab 复制代码
x1 = 1:10;
y1 = rand(1,10);
x2 = 1:10;
y2 = rand(1,10);
plot(x1,y1);
hold on
plot(x2,y2);

2 新建独立图窗

使用 figure(n) 创建第 n n n 个图窗:

matlab 复制代码
x1 = 1:10;
y1 = rand(1,10);
x2 = 1:10;
y2 = rand(1,10);
figure(1)
plot(x1,y1);
figure(2)
plot(x2,y2);

八、单图窗内多子图

使用 subplot(m,n,k) 划分布局:

matlab 复制代码
x = [1 2 3 4 5];
y = rand(4,5);
subplot(2,2,1);
plot(x,y(1,:),'-o','color','b','MarkerSize',8);
xlabel("X 轴名称");
ylabel("Y 轴名称");
title('图片一');
grid on
subplot(2,2,2);
plot(x,y(2,:),'-o','color','r','MarkerSize',8);
grid on
subplot(2,2,3);
plot(x,y(3,:),'-o','color','b','MarkerSize',8);
grid on
subplot(2,2,4);
plot(x,y(4,:),'-o','color','r','MarkerSize',8);
grid on

总结

本文梳理 MATLAB 基础绘图要素,包含色彩、线型、标记的配置方式,以及散点图、折线图的绘制流程,同时介绍标题、图例、坐标轴、网格、多图布局等配套功能的实现方法。


MATLAB 常用绘图命令汇总

大四新生校园迷路 2025-05-24 17:32:25

本文梳理 MATLAB 内置绘图指令,包含二维散点图、折线图、参数圆、双纵轴图、热力图、Voronoi 图的实现案例,同时介绍坐标轴、图例、特殊字符、文本标注等配套设置方法。

(一)二维图像

1 散点图 scatter()

函数语法:

matlab 复制代码
scatter(x,y,sz,c,mkr,filled)

参数说明:

  • sz:标记尺寸,支持标量或向量,默认取值 36 36 36
  • c:标记配色
  • mkr:标记样式,默认样式为圆形 o
  • filled:开启标记内部填充
  • MarkerEdgeColor:标记轮廓颜色
  • MarkerFaceColor:标记填充颜色
  • LineWidth:标记轮廓线宽度
【例 1.1.1】
matlab 复制代码
x = linspace(0, 3*pi, 200);         % 生成 [0, 3π] 区间内 200 个等间距采样点
y = cos(x) + rand(1, 200);           % 生成叠加随机扰动的曲线数据
sz = linspace(1, 100, 200);          % 散点尺寸由 1 线性变化至 100
c = linspace(1, 100, 200);           % 散点颜色渐变参数
scatter(x,y,sz, ...
    c, ...
    'p', ...                         % 设置标记为五角星
    'filled', ...                    % 填充标记
    'LineWidth', 2);                 % 设置轮廓线宽度

参考文档:散点图 - MATLAB scatter - MathWorks 中国

2 折线图 plot()

基础语法 1
matlab 复制代码
plot(X,Y)

参数规则:

  1. XY 为向量,二者长度需保持一致,绘制 Y Y Y 随 X X X 变化的曲线。
  2. XY 为矩阵,二者维度需保持一致,按列逐组绘制曲线。
基础语法 2
matlab 复制代码
plot(X,Y,LineSpec)

LineSpec 为格式标识符,用于统一设置线型、标记、颜色,字符顺序无限制,可按需省略部分样式。

线型 标记 颜色
- 实线(默认) o 圆形 y 黄色
-- 虚线 + 加号 m 品红色
: 点线 * 星号 c 青蓝色
-. 点划线 . 实心点 r 红色
x 叉号 g 绿色
_ 水平标记 b 蓝色
` ` 垂直标记
s/square 方形 k 黑色
d/diamond 菱形
^ 上三角
v 下三角
> 右三角
< 左三角
p/pentagram 五角形
h/hexagram 六角形
【例 1.2.1】
matlab 复制代码
X = 1:5;
Y = X.^2;
plot(X,Y,'--*r');
【例 1.2.2】
matlab 复制代码
X = [1 2 3 4 5;6 7 8 9 10];
Y = X.^2;
plot(X,Y,'.-m')
基础语法 3
matlab 复制代码
plot(X1,Y1,...,Xn,Yn)

在同一坐标系中绘制多组曲线,效果等价于搭配 hold on 指令逐次绘图。

【例 1.2.3】
matlab 复制代码
X1 = 1:5;    X2 = 2:6;    X3 = 3:7;
Y1 = X1.^2;  Y2 = X2.^3;  Y3 = 2*X3;
plot(X1,Y1,X2,Y2,X3,Y3);

% 等效写法
% plot(X1,Y1);
% hold on
% plot(X2,Y2);
% hold on
% plot(X3,Y3);
基础语法 4
matlab 复制代码
plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)

为每组曲线单独配置样式标识符。

基础语法 5
matlab 复制代码
plot(Y)
  1. Y 为向量,横轴刻度范围为 1 ∼ length ( Y ) 1 \sim \text{length}(Y) 1∼length(Y)。
  2. Y 为矩阵,按列绘制曲线,横轴刻度范围为 1 ∼ 行数 1 \sim \text{行数} 1∼行数。
  3. Y 为复数,等价于执行 plot(real(Y),imag(Y))
基础语法 6
matlab 复制代码
plot(___,Name,Value)

通过键值对配置曲线属性,常用参数如下:

  • LineWidth:线条宽度,默认取值 0.5 0.5 0.5
  • MarkerIndices:指定显示标记的数据点下标,默认取值 1 : length ( Y ) 1:\text{length}(Y) 1:length(Y)
  • MarkerEdgeColor:标记轮廓颜色,默认取值 auto
  • MarkerFaceColor:标记填充颜色,默认取值 none
  • MarkerSize:标记尺寸,默认取值 6 6 6
【例 1.2.4】

需求:绿色虚线、线宽 2 2 2、标记尺寸 10 10 10、标记轮廓为蓝色、标记填充色 RGB 为 0.5 , 0.5 , 0.5 0.5,0.5,0.5 0.5,0.5,0.5,仅在第 1 , 5 , 10 1,5,10 1,5,10 个数据点显示标记。

matlab 复制代码
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--gs',...
    'LineWidth',2, ...
    'MarkerSize',10,...
    'MarkerEdgeColor','b',...
    'MarkerFaceColor',[0.5,0.5,0.5],...
    'MarkerIndices',[1 5 10]);

参考文档:二维线图 - MATLAB plot - MathWorks 中国

3 其他二维图形

3.1 参数方程法绘制圆形

以 ( 4 , 3 ) (4,3) (4,3) 为圆心、 2 2 2 为半径绘制圆形,axis equal 指令可令横纵轴单位长度保持一致。

【例 1.3.1】
matlab 复制代码
r = 2;                      % 圆半径
xc = 4;                     % 圆心横坐标
yc = 3;                     % 圆心纵坐标
theta = linspace(0,2*pi);   % 参数 θ 取值区间
x = r*cos(theta) + xc;      % 横坐标参数表达式
y = r*sin(theta) + yc;      % 纵坐标参数表达式
plot(x,y)
axis equal
3.2 双纵轴图形
方法一:yyaxis
matlab 复制代码
yyaxis left   % 启用左侧纵轴
yyaxis right  % 启用右侧纵轴
【例 1.3.3.1】
matlab 复制代码
x = linspace(0,10);
y1 = sin(3*x);
yyaxis left
plot(x,y1);
ylabel('左侧坐标轴');

y2 = sin(3*x).*exp(x./2);
yyaxis right
plot(x,y2);
ylim([-150 150]);
ylabel('右侧坐标轴');

参考文档:创建具有两个 y 轴的图 - MATLAB yyaxis - MathWorks 中国

方法二:plotyy

该函数存在版本兼容性问题,官方不推荐使用,MATLAB R2018a 版本可正常运行。

参考文档:(不推荐) 创建具有两个 y 轴的图形 - MATLAB plotyy - MathWorks 中国

3.3 直方图

内容待补充。(原文空缺)

3.4 热力图

下述代码封装为函数,可用于绘制相关系数矩阵热力图,输入变量名与方阵即可调用。

函数定义
matlab 复制代码
function Heatmap(string_name,rho)
% 绘制矩阵热力图
% string_name:坐标轴标签集合
% rho:待绘图方阵
xvalues = string_name;
yvalues = string_name;
h = heatmap(xvalues,yvalues,rho, 'FontSize',10, 'FontName','宋体');
colormap('winter');
sortx(h,'y');  % 按 y 轴数据升序排列
end
函数调用
matlab 复制代码
% 定义坐标轴标签
string_name = {'y','x1','x2','x3','x4','x5','x6'};
% 计算变量相关系数矩阵
[rho,pval] = corr([y,x1,x2,x3,x4,x5,x6]);
figure;
Heatmap(string_name,rho);

补充说明:矩阵元素为 NaN 时,热力图对应区域默认显示黑色,可自行调整样式。colormap 支持 springsummerautumnwinter 等配色方案。

3.5 Voronoi 图

Voronoi 图由相邻数据点连线的垂直平分线构成多边形区域,函数语法:

matlab 复制代码
voronoi(x,y)

其中 ( x , y ) (x,y) (x,y) 为离散点坐标。

【例 1.3.4.1】
matlab 复制代码
rng default;                % 设定随机数种子
x = rand([1 10]);           % 生成 10 个随机横坐标
y = rand([1 10]);           % 生成 10 个随机纵坐标
voronoi(x,y)
axis equal

参考文档:Voronoi 图 - MATLAB voronoi - MathWorks 中国

4 绘图辅助操作

4.1 标题设置
matlab 复制代码
title('主标题','副标题', 'Color','blue');
t.FontSize = 16;    % 主标题字号
s.FontAngle = 'italic';  % 副标题字体样式

参数说明:副标题为可选项,字体颜色默认黑色。

参考文档:添加标题 - MATLAB title - MathWorks 中国

4.2 坐标轴标签
matlab 复制代码
xlabel('txt');   % 横轴标签
ylabel('txt');   % 纵轴标签
  1. 多行标签写法:
matlab 复制代码
xlabel({'Population','(in thousands)'});
  1. 样式配置写法:
matlab 复制代码
xlabel('Population','FontSize',12,'FontWeight','bold','Color','r');
  1. 数学符号与上下标:支持 LaTeX 语法,_ 代表下标,^ 代表上标,多字符上下标需用 {} 包裹。
matlab 复制代码
xlabel('-2\pi \leq x \leq 2\pi')
xlabel('t_{seconds}');
ylabel('e^t');

参考文档:为 x 轴添加标签 - MATLAB xlabel - MathWorks 中国

4.3 坐标轴范围
matlab 复制代码
xlim([xmin xmax]);
ylim([ymin ymax]);
  • xmin/ymin:轴下限,取值 inf/-inf 时由程序自适应范围
  • xmax/ymax:轴上限

参考文档:设置或查询 x 坐标轴范围 - MATLAB xlim设置或查询 y 坐标轴范围 - MATLAB ylim

4.4 坐标轴刻度与标签
matlab 复制代码
xticks([lab1 lab2 lab3 ...]);        % 设置刻度位置
xticklabels({'labels1','labels2',...}); % 设置刻度文本
【例 1.6.1】
matlab 复制代码
x = linspace(0,6*pi);
y = sin(x);
plot(x,y)
xlim([0 6*pi])
xticks(0:pi:6*pi)
xticklabels({'0','\pi','2\pi','3\pi','4\pi','5\pi','6\pi'});
【例 1.6.2】
matlab 复制代码
x = linspace(0,2*pi,200);
y = sin(x);
plot(x,y);
xticks(0:pi:2*pi)
set(gca,'Xticklabel',['0';'1';'2']);

参考文档:设置或查询 x 轴刻度标签 - MATLAB xticklabels

4.5 数据点文本标注
matlab 复制代码
text(x,y,'txt','Color','red','FontSize',14)

参数: ( x , y ) (x,y) (x,y) 为标注位置坐标,txt 为标注内容。

参考文档:向数据点添加文本说明 - MATLAB text

4.6 图例
matlab 复制代码
legend('leg1','leg2',...);

图例文本按绘图顺序与曲线一一对应。

参考文档:在坐标区上添加图例 - MATLAB legend

4.7 特殊字符与字体(TeX/LaTeX 语法)
字体修饰符
修饰符 说明 示例
^{ } 上标 'text^{superscript}'
_{ } 下标 'text_{subscript}'
\bf 粗体 '\bf text'
\it 斜体 '\it text'
\sl 伪斜体 '\sl text'
\rm 常规字体 '\rm text'
\fontname{name} 指定字体 '\fontname{Courier} text'
\fontsize{N} 设置字号(单位:磅) '\fontsize{15} text'
\color{name} 命名颜色 '\color{magenta} text'
\color[rgb]{r,g,b} 自定义 RGB 颜色 '\color[rgb]{0,0.5,0.5} text'
希腊字母与数学符号
字符序列 符号 字符序列 符号 字符序列 符号
\alpha α \alpha α \upsilon υ \upsilon υ \sim ∼ \sim ∼
\angle ∠ \angle ∠ \phi ϕ \phi ϕ \leq ≤ \leq ≤
\ast ∗ \ast ∗ \chi χ \chi χ \infty ∞ \infty ∞
\beta β \beta β \psi ψ \psi ψ \geq ≥ \geq ≥
\gamma γ \gamma γ \omega ω \omega ω \pm ± \pm ±
\delta δ \delta δ \Gamma Γ \Gamma Γ \neq ≠ \neq =
\epsilon ϵ \epsilon ϵ \Delta Δ \Delta Δ \partial ∂ \partial ∂
\zeta ζ \zeta ζ \Theta Θ \Theta Θ \int ∫ \int ∫
\eta η \eta η \Lambda Λ \Lambda Λ \times × \times ×
\theta θ \theta θ \Xi Ξ \Xi Ξ \div ÷ \div ÷
\pi π \pi π \Sigma Σ \Sigma Σ \nabla ∇ \nabla ∇

使用 LaTeX 解析器时,行内公式用单美元符 $...$ 包裹,独立公式用双美元符 $$...$$ 包裹。

4.8 局部放大

可使用软件自带手动工具实现局部放大,操作后可直接保存图像,适用于少量图形处理。

4.9 基础视图指令
  1. hold on:保留当前坐标系内已有图形,叠加新绘图内容
  2. grid on:显示坐标系主网格线;grid off:隐藏网格线

参考文档:hold 指令grid 指令

(二)三维图像

  1. plot3:三维折线图,内容待补充
  2. surf:三维曲面图,内容待补充

附录:MATLAB 默认配色表

RGB 三元组 十六进制代码 视觉描述
0 0.4470 0.7410 0\\ \\ 0.4470\\ \\ 0.7410 0 0.4470 0.7410 #0072BD 普蓝
0.8500 0.3250 0.0980 0.8500\\ \\ 0.3250\\ \\ 0.0980 0.8500 0.3250 0.0980 #D95319 暗橘
0.9290 0.6940 0.1250 0.9290\\ \\ 0.6940\\ \\ 0.1250 0.9290 0.6940 0.1250 #EDB120 中黄
0.4940 0.1840 0.5560 0.4940\\ \\ 0.1840\\ \\ 0.5560 0.4940 0.1840 0.5560 #7E2F8E 紫色
0.4660 0.6740 0.1880 0.4660\\ \\ 0.6740\\ \\ 0.1880 0.4660 0.6740 0.1880 #77AC30 树绿
0.3010 0.7450 0.9330 0.3010\\ \\ 0.7450\\ \\ 0.9330 0.3010 0.7450 0.9330 #4DBEEE 浅天蓝
0.6350 0.0780 0.1840 0.6350\\ \\ 0.0780\\ \\ 0.1840 0.6350 0.0780 0.1840 #A2142F 苝褐

配色参考网站

  1. https://www.culrs.com/#/ColorSpace
  2. https://mycolor.space/

MATLAB 绘图高效技巧大全:掌握 20 个方法

雷达科研 han 2024-04-02 09:42:26

MATLAB(Matrix Laboratory)是工程、数理领域常用科学计算工具,绘图模块可实现数据可视化。本文整理二十类绘图实用技巧,配套可运行代码示例,覆盖函数选用、样式自定义、多图布局、注释添加等功能。

1 引言

MATLAB 具备完善的数值计算与图形绘制能力。不同场景需匹配对应绘图函数,合理设置图形样式、标注元素可提升数据展示效果。下文从基础至进阶逐一介绍绘图方法与实现代码。

2 绘图函数选择

依据数据类型与展示目标选用函数,基础曲线绘制使用 plot

matlab 复制代码
% 绘制正弦曲线
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
title('Sine Wave');
xlabel('X');
ylabel('Y');

3 图形样式自定义

通过 LineStyleColorMarker 配置线条与标记样式。

matlab 复制代码
x = linspace(0, 2*pi, 100);
y1 = sin(x);
y2 = cos(x);
plot(x, y1, 'r--o', 'LineWidth', 2);
hold on;
plot(x, y2, 'b-.s', 'LineWidth', 1.5);
legend('sin(x)', 'cos(x)');

参数说明:

  • LineStyle:包含实线、虚线、点线、点划线四类样式
  • Color:支持命名字符、RGB 数值、十六进制代码
  • Marker:定义数据点标记外形

4 多图合并显示

使用 subplot(m,n,p) 将单个图窗划分为 m m m 行 n n n 列子图阵列, p p p 为子图序号。

matlab 复制代码
x = linspace(0, 2*pi, 100);
y1 = sin(x);
y2 = cos(x);
subplot(2, 1, 1);
plot(x, y1, 'r');
title('Sine Wave');
xlabel('X');
ylabel('Y');

subplot(2, 1, 2);
plot(x, y2, 'b');
title('Cosine Wave');
xlabel('X');
ylabel('Y');

拓展示例(2 行 2 列子图):

matlab 复制代码
x = linspace(0, 2*pi, 100);
subplot(2, 2, 1); plot(x, sin(x)); title('Subplot 1: Sine Wave');
subplot(2, 2, 2); plot(x, cos(x)); title('Subplot 2: Cosine Wave');
subplot(2, 2, 3); plot(x, tan(x)); title('Subplot 3: Tangent Wave');
subplot(2, 2, 4); plot(x, x.^2); title('Subplot 4: Square Wave');

5 图例设置

legend 用于标注曲线含义,Location 参数控制图例位置,可选参数:northsoutheastwestnortheastsoutheastnorthwestsouthwestbest

6 误差条形图

errorbar 绘制带误差范围的图形,适用于展示数据波动区间。

matlab 复制代码
x = 1:5;
y = [1 2 3 4 5];
error = [0.1 0.2 0.1 0.3 0.2];
errorbar(x, y, error, 'o-');
xlabel('X');
ylabel('Y');
title('Error Bar Plot');

7 图形透明度设置

alpha 函数调整图形对象透明度,取值区间 0 , 1 0,1 0,1, 0 0 0 为完全透明, 1 1 1 为完全不透明。

matlab 复制代码
x = linspace(0, 2*pi, 100);
y1 = sin(x);
y2 = cos(x);
plot(x, y1, 'r', 'LineWidth', 2);
hold on;
plot(x, y2, 'b', 'LineWidth', 2);
alpha(0.5);
legend('sin(x)', 'cos(x)');

8 极坐标图与坐标轴自定义

polarplot 实现极坐标绘图,搭配 xlimylimxticks 完成坐标轴定制。

matlab 复制代码
% 极坐标图
theta = linspace(0, 2*pi, 100);
rho = sin(2*theta);
polarplot(theta, rho);
title('Polar Plot');

% 直角坐标轴自定义
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
xlim([0, 2*pi]);
ylim([-1, 1]);
xticks([0, pi, 2*pi]);
xticklabels({'0', '\pi', '2\pi'});
xlabel('X');
ylabel('Y');

9 三维曲面图

surf 结合 meshgrid 生成三维曲面,展示空间数据分布。

matlab 复制代码
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z);
xlabel('X');
ylabel('Y');
zlabel('Z');
title('3D Surface Plot');

10 热力图

heatmap 将矩阵数值以色彩区分展示。

matlab 复制代码
data = rand(5,5);
heatmap(data);
title('Heatmap');

11 柱状图

bar 绘制柱状图,用于类别数据对比。

matlab 复制代码
x = 1:5;
y = [3 7 2 5 8];
bar(x, y);
title('Bar Chart');
xlabel('X');
ylabel('Y');

12 饼图

pie 展示数据占比关系。

matlab 复制代码
sizes = [25, 35, 20, 20];
labels = {'A', 'B', 'C', 'D'};
pie(sizes, labels);
title('Pie Chart');

13 直方图

histogram 分析数据分布特征,支持多种归一化模式。

matlab 复制代码
data = randn(1000, 1);
histogram(data, 'Normalization', 'pdf');
title('Histogram');
xlabel('Value');
ylabel('Probability Density');

14 文本与注释

text 添加文本标注,annotation 绘制箭头、图形等注释元素。

matlab 复制代码
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
text(3, 0.5, 'Peak', 'FontSize', 12);
annotation('arrow', [0.2, 0.3], [0.6, 0.8]);

15 动态绘图

结合循环与 drawnow 刷新视图,实现动态图像效果。

matlab 复制代码
x = linspace(0, 2*pi, 100);
for t = 1:length(x)
    plot(x(1:t), sin(x(1:t)), 'r');
    title('Dynamic Plot');
    xlabel('X');
    ylabel('Y');
    drawnow;
end

16 多项式拟合曲线

polyfit 完成最小二乘多项式拟合,polyval 计算拟合函数数值。

matlab 复制代码
x = linspace(0, 2*pi, 100);
y = sin(x) + randn(size(x))*0.1;
p = polyfit(x, y, 5);
y_fit = polyval(p, x);
plot(x, y, 'o', x, y_fit, 'r');
title('Polynomial Fitting');
xlabel('X');
ylabel('Y');
legend('Data', 'Fitted Curve');

17 等高线图

contour 绘制二维数据等值线。

matlab 复制代码
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = X.^2 + Y.^2;
contour(X,Y,Z);
xlabel('X');
ylabel('Y');
title('Contour Plot');

18 矢量场图

quiver 绘制二维矢量场,quiver3 绘制三维矢量场。

matlab 复制代码
% 二维矢量场
x = [1, 2, 3, 4, 5];
y = [2, 4, 6, 8, 10];
u = [-1, 1, -2, 2, -3];
v = [2, -2, 4, -4, 6];
quiver(x, y, u, v, 'Color', 'r', 'LineWidth', 2);

19 散点图矩阵

scattermatrix 展示多组变量两两之间的关联关系。

matlab 复制代码
data = randn(100, 3);
scattermatrix(data);
title('Scatter Matrix');

20 三维散点图

scatter3 实现三维离散点绘制。

matlab 复制代码
x = randn(100,1);
y = randn(100,1);
z = randn(100,1);
scatter3(x, y, z, 'filled', 'MarkerFaceColor', 'r', 'SizeData', 100);
xlabel('X');
ylabel('Y');
zlabel('Z');
title('3D Scatter Plot');

21 图形保存

saveas 可将图窗保存为 PNG、JPEG、PDF 等格式,gcf 指代当前图窗句柄。

matlab 复制代码
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
title('Sine Wave');
xlabel('X');
ylabel('Y');
saveas(gcf, 'sine_wave.png');

22 结束语

本文覆盖 MATLAB 主流绘图函数与配套设置方法,涵盖基础绘图、样式调整、布局设计、数据分析可视化等场景。合理运用相关指令可满足科研、工程中的数据展示需求。


MATLAB 绘图样式调整方法------线条、坐标轴、标题、图例

XTU__zhang 原创于 2021-04-29 21:29:54 发布

本文系统介绍 MATLAB 绘图完成后,线条、坐标轴、标题与图例的参数配置方式,涵盖线条色彩、线型、线宽、标记样式,坐标轴名称、字体、色彩,以及图例位置、色彩、字体等内容。结合代码实例说明各类参数的配置规则,提升图像展示效果与可读性。

一、基础对象说明

MATLAB 绘制的图像包含三类独立对象,可分别进行参数配置。

1. 图窗 Figure(gcf)

2. 曲线 Line

通过 plot 等绘图指令生成的线条对象。

3. 坐标轴 Axes(gca)

调用 plot 指令仅对曲线对象进行配置,图窗、坐标轴可单独设置。MATLAB 提供默认对象标识,图窗默认标识为 gcf ,坐标轴默认标识为 gca;曲线对象可在绘图时自定义变量名,示例代码如下:

matlab 复制代码
>> x=[1 2 3 4 5];
>> y=x.^2;
>> p1=plot(x,y);

代码中 p1 为当前曲线对应的对象名称,后续可通过该名称修改曲线属性。

二、曲线样式配置:线型、色彩、标记

plot 指令为例,基础绘图代码如下:

matlab 复制代码
>> x=[1 2 3 4 5];
>> y=x.^2;
>> plot(x,y);

运行效果:

plot 支持两类常用语法格式,可完成曲线样式配置:

matlab 复制代码
plot(X1,Y1,LineSpec1,...,XN,YN,LineSpecN);
plot(___,Name1,Value1,...,NameN,ValueN);

2.1 线型标识字符串 LineSpec

LineSpec 为字符型参数,由线型颜色标记三类字符自由组合而成,字符顺序无固定要求。各类字符定义如下表:

线型字符 说明
- 实线
-- 虚线
-. 点划线
: 点线
颜色字符 说明
k 黑色
b 蓝色
g 绿色
c 青色
m 品红色
r 红色
w 白色
y 黄色
标记字符 说明
. 点状标记
* 星号标记
X 叉号标记
O 空心圆标记
+ 加号标记
s 方形标记
d 菱形标记
p 五角形标记
h 六角形标记
^ 上三角标记
v 下三角标记
< 左三角标记
> 右三角标记

示例:将曲线设置为虚线、黑色、星号标记,代码如下:

matlab 复制代码
>> plot(x,y,'--k*');

运行效果:

2.2 名称-值对组参数

该类参数可实现精细化样式配置,参数名称与对应取值成对使用。

2.2.1 线条颜色 Color

除预设颜色字符外,可通过颜色名称、RGB 三元组、十六进制色值自定义色彩。示例(设置为绿色):

matlab 复制代码
>> plot(x,y,'Color','green');
>> plot(x,y,'Color',[0 1 0]);
>> plot(x,y,'Color','#00FF00');

运行效果:

自定义紫色曲线示例:

matlab 复制代码
>> plot(x,y,'Color','#A500EB');

运行效果:

常用免费配色参考网站:

Adobe Color CC

Material Palette

Flat UI Color Picker

2.2.2 线型 LineStyle

配置规则与 LineSpec 线型字符一致,示例(设置为点划线):

matlab 复制代码
>> plot(x,y,'LineStyle','-.');
2.2.3 线宽 LineWidth

单位为磅, 1 磅 = 1 / 72 英寸 1\ \text{磅} = 1/72\ \text{英寸} 1 磅=1/72 英寸,默认取值为 0.5 0.5 0.5。示例(设置线宽为 2 2 2 磅):

matlab 复制代码
>> plot(x,y,'LineWidth',2);

运行效果:

2.2.4 标记样式 Marker

配置规则与 LineSpec 标记字符一致,示例(设置为加号标记):

matlab 复制代码
>> plot(x,y,'Marker','+');
2.2.5 标记色彩
  • MarkerEdgeColor:标记轮廓颜色
  • MarkerFaceColor:标记填充颜色
    取值支持颜色名称、RGB 三元组、十六进制色值。
2.2.6 标记尺寸 MarkerSize

单位为磅,默认取值为 6 6 6。示例(设置加号标记尺寸为 12 12 12 磅):

matlab 复制代码
>> plot(x,y,'Marker','+','MarkerSize',12);

运行效果:

2.2.7 标记点位 MarkerIndices

用于指定数据点标记的显示位置,取值为数据点下标构成的向量。基础绘图代码:

matlab 复制代码
>> x=[0:0.01:3];
>> y=x.^2;
>> plot(x,y,'-d');

运行效果(标记密集重叠):

示例 1 :仅在第 1 1 1、 150 150 150、 301 301 301 个数据点显示标记

matlab 复制代码
>> plot(x,y,'-d','MarkerIndices',[1 150 301]);

运行效果:

示例 2 :从首个数据点开始,每隔 50 50 50 个点显示一组标记

matlab 复制代码
>> plot(x,y,'-d','MarkerIndices',1:50:length(y));

运行效果:

使用该参数时必须显式指定线型,否则仅显示标记、不绘制曲线。错误示例:

matlab 复制代码
>> plot(x,y,'d','MarkerIndices',1:50:length(y));

运行效果:

三、曲线对象变量的应用

绘图时为曲线绑定变量名,可在绘图完成后二次修改样式,无需重复执行绘图指令。多条曲线绘图示例:

matlab 复制代码
>> x=[1 2 3 4 5];
>> y1=x;
>> y2=2*x-1;
>> y3=3*x-2;
>> p=plot(x,y1,'-rO',x,y2,'-kX',x,y3,':b*');

运行效果:

变量 p \boldsymbol{p} p 为 3 × 1 3\times1 3×1 维度的曲线对象数组。修改第三条曲线线宽为 2 2 2 磅,提供两种实现方式:

3.1 数组索引写法

matlab 复制代码
>> p(3).LineWidth=2;

3.2 set 指令写法

set(H,Name1,Value1,...,NameN,ValueN) 为图形对象通用属性设置指令, H H H 为目标对象。

matlab 复制代码
>> set(p(3),'LineWidth',2);

两种方式运行效果一致:

四、坐标轴名称与样式配置

沿用基础绘图代码:

matlab 复制代码
>> x=[1 2 3 4 5];
>> y=x.^2;
>> plot(x,y);

4.1 坐标轴名称设置

xlabelylabelzlabel 分别用于设置 x x x、 y y y、 z z z 轴名称,完整语法:

matlab 复制代码
xlabel(target,text,Name1,Value1,...,NameN,ValueN);
ylabel(target,text,Name1,Value1,...,NameN,ValueN);

target 为目标坐标轴对象,默认取值为 gcatext 为轴名称文本。

示例:设置 x x x 轴名称为 X-axis \text{X-axis} X-axis, y y y 轴名称为 y = x 2 y=x^2 y=x2

matlab 复制代码
>> xlabel('X-axis');
>> ylabel('y=x^2');

运行效果:

多行文本设置示例:

matlab 复制代码
>> xlabel({'X-','axis'});

运行效果:

MATLAB 轴名称、图例文本默认支持 TeX 语法:

  1. 文本斜体:
matlab 复制代码
>> xlabel('{\it X-axis}');
  1. 希腊字母与数学符号:
matlab 复制代码
>> xlabel('-2\pi \leq x \leq 2\pi');

复杂数学公式可启用 LaTeX 解析模式,配置 Interpreter 参数为 latex

相关用法可参考文档:使用 LaTeX 表达 MATLAB 绘图中的常见公式

4.2 坐标轴样式配置

通过 set(gca, ...) 指令配置坐标轴全局样式。

4.2.1 字体尺寸 FontSize

单位为磅,示例(设置字体尺寸为 10 10 10 磅):

matlab 复制代码
>> set(gca,'FontSize',10);
4.2.2 字体粗细 FontWeight

默认取值为 normal,加粗设置取值为 bold

matlab 复制代码
>> set(gca,'FontWeight','bold');

运行效果:

4.2.3 字体类型 FontName

示例(设置为 Times New Roman 字体):

matlab 复制代码
>> set(gca,'FontName','Times');
4.2.4 文本颜色 Color

取值规则与线条颜色参数一致。

五、坐标轴刻度与显示范围配置

以函数 y = sin ⁡ ( x ) , x ∈ 0 , 2 π y=\sin(x),\ x\in0,2\\pi y=sin(x), x∈0,2π 为例,基础绘图代码:

matlab 复制代码
>> x=linspace(0,2*pi);
>> y=sin(x);
>> plot(x,y);

运行效果:

5.1 主刻度与刻度标签

  • xtick / ytick:设置坐标轴主刻度位置
  • xticklabel / yticklabel:设置刻度对应的显示文本

示例 1:限定 x x x 轴刻度位置为 2 2 2、 6 6 6

matlab 复制代码
>> set(gca,'xtick',[2 6]);

等效简写指令:

matlab 复制代码
>> xticks([2 6]);

运行效果:

示例 2:修改刻度显示文本

matlab 复制代码
>> set(gca,'xticklabel',{'x=2','x=6'});

等效简写指令:

matlab 复制代码
>> xticklabels({'x=2','x=6'});

运行效果:

示例 3:使用圆周率标注 x x x 轴刻度

matlab 复制代码
>> x=linspace(0,2*pi);
>> y=sin(x);
>> plot(x,y);
>> set(gca,'xtick',0:pi/2:2*pi);
>> set(gca,'xticklabel',{'0','\pi/2','\pi','3\pi/2','2\pi'});

运行效果:

5.2 次刻度 xminortick / yminortick

在相邻主刻度之间添加细分刻度,取值 on 为启用,off 为关闭。示例:

matlab 复制代码
>> set(gca,'xminortick','on');

运行效果:

5.3 坐标轴显示范围 xlim / ylim

设置坐标轴的可视区间,示例(限定 x x x 轴范围为 π , 2 π \\pi,2\\pi π,2π):

matlab 复制代码
>> set(gca,'xlim',[pi,2*pi]);

等效简写指令:

matlab 复制代码
>> xlim([pi,2*pi]);

运行效果:

5.4 网格线 grid

grid on 启用网格线,grid off 关闭网格线:

matlab 复制代码
>> grid on

运行效果:

5.5 坐标轴边框 box

box off 隐藏坐标轴右侧与上侧边框,box on 恢复边框:

matlab 复制代码
>> box off

运行效果:

5.6 坐标轴整体可见性 axis

axis off 隐藏全部坐标轴与刻度,axis on 恢复显示:

matlab 复制代码
>> axis off

运行效果:

5.7 对数坐标绘图

对数坐标可使用专用指令:loglogsemilogxsemilogy。指令用法可在 MATLAB 命令行窗口执行 help + 指令名 查询,相关汇总文档:MATLAB 的几种常用出图方式

六、图像标题设置

title 指令用于添加图像主标题与副标题,完整语法:

matlab 复制代码
title(titletext,subtitletext,Name1,Value1,...,NameN,ValueN)

titletext 为主标题文本,subtitletext 为副标题文本;后续名称-值对组参数可配置字体尺寸、粗细、类型、颜色等样式。

七、图例配置

7.1 图例基础添加

legend 指令用于添加图例,完整语法:

matlab 复制代码
legend(target,label1,...,labelN,Name1,Value1,...,NameN,ValueN)

target 为目标对象,label1 \dots labelN 为图例文本,文本顺序需与曲线绘制顺序保持一致。

沿用多条曲线绘图代码:

matlab 复制代码
>> x=[1 2 3 4 5];
>> y1=x;
>> y2=2*x-1;
>> y3=3*x-2;
>> p=plot(x,y1,'-rO',x,y2,'-kX',x,y3,':b*');

添加图例并绑定对象变量:

matlab 复制代码
>> lg1=legend('y=x','y=2x-1','y=3x-2');

运行效果:

7.2 图例样式配置

7.2.1 字体相关参数

包含 FontSizeFontNameFontWeight,配置规则与坐标轴字体参数一致。示例:

matlab 复制代码
>> set(lg1,'FontSize',10,'FontName','Times','FontWeight','bold');

运行效果:

7.2.2 色彩参数
  • TextColor:图例文字颜色
  • Color:图例外框填充颜色

示例(文字设为红色,外框设为黄色):

matlab 复制代码
>> set(lg1,'TextColor','red','Color','yellow');

运行效果:

7.2.3 图例位置 Location

通过预设参数配置图例位置,分类如下:

取值 说明
坐标区域内部
north 区域顶部
south 区域底部
east 区域右侧
west 区域左侧
northeast 区域右上角
northwest 区域左上角
southeast 区域右下角
southwest 区域左下角
坐标区域外部
northoutside 区域外顶部
southoutside 区域外底部
eastoutside 区域外右侧
westoutside 区域外左侧
northeastoutside 区域外右上角
northwestoutside 区域外左上角
southeastoutside 区域外右下角
southwestoutside 区域外左下角

示例(放置于坐标区域左上角):

matlab 复制代码
>> set(lg1,'Location','northwest');

运行效果:

7.2.4 自定义位置与尺寸 Position

取值为四元素归一化向量 [left, bottom, width, height],数值范围 0 , 1 0,1 0,1,以图窗为参照基准。示例:

matlab 复制代码
>> set(lg1,'Position',[0.2,0.7,0.2,0.2]);

运行效果:

7.2.5 排列方向 Orientation
  • vertical:垂直排列(默认)
  • horizontal:水平排列

示例(左上角水平排列):

matlab 复制代码
>> set(lg1,'Location','northwest','Orientation','horizontal');

运行效果:

7.2.6 图例外框可见性

legend('boxoff') 隐藏外框,legend('boxon') 显示外框:

matlab 复制代码
>> legend('boxoff');

运行效果:

7.2.7 图例整体可见性

legend('hide') 隐藏图例,legend('show') 显示图例:

matlab 复制代码
>> legend('hide');

运行效果:


MATLAB:添加图标题、轴标签、图例、更改字体大小

孙悟空 原创于 2021-08-15 14:20:29 发布

1 添加标题

title 指令用于为图像添加标题。

matlab 复制代码
clc;
clear;

% 绘图
x = linspace(0,2*pi);
y = sin(x) - tan(sin(x));
plot(x,y)
title('y = sin(x)-tan(sin(x))')

运行效果:

2 添加轴标签

  • xlabel:配置 x x x 轴标签
  • ylabel:配置 y y y 轴标签
  • zlabel:配置 z z z 轴标签(三维绘图 plot3 使用)

示例代码:

matlab 复制代码
clc;
clear;

% 绘图
x = linspace(0,2*pi);
y = sin(x)-tan(sin(x));
plot(x,y)
title('y = sin(x) - tan(sin(x))')
xlabel('X(m)')
ylabel('Y(m)')

运行效果:

3 添加图例

legend 按照曲线绘制顺序添加图例文本。

matlab 复制代码
clc;
clear;

% 绘图
x = linspace(0,2*pi);
y = sin(x)-tan(cos(x));

plot(x,sin(x))
hold on
plot(x,cos(x))
hold on
plot(x,tan(cos(x)))
hold on
plot(x,y)
hold off

title(' 添加图例 ')
xlabel('X(m)')
ylabel('Y(m)')
legend('y = sin(x)','y = cos(x)','y = tan(cos(x))','y = sin(x) - tan(cos(x))')

运行效果:

4 字体尺寸修改

通过 FontSize 参数设置标题、轴标签、图例的字体尺寸。

matlab 复制代码
clc;
clear;

% 绘图
x = linspace(0,2*pi);
y = sin(x)-tan(cos(x));

plot(x,sin(x))
hold on
plot(x,cos(x))
hold on
plot(x,tan(cos(x)))
hold on
plot(x,y)
hold off

title(' 添加图例 ','FontSize',20)
xlabel('X/(m)','FontSize',15)
ylabel('Y/(m)','FontSize',10)
legend('y = sin(x)','y = cos(x)','y = tan(cos(x))','y = sin(x) - tan(cos(x))')

运行效果:

相关链接

https://ww2.mathworks.cn/help/matlab/creating_plots/add-title-axis-labels-and-legend-to-graph.html


MATLAB 的几种常用出图方式

XTU__zhang 原创于 2021-04-26 18:04:37 发布

本文结合 MATLAB 绘图、图像读取场景,梳理界面保存、导出配置、常用代码指令及第三方工具包四类图像导出方式,并介绍图像灰边去除方法,优化输出效果,内容可供查阅参考。

一、图片来源:MATLAB 绘图或者读取文件

1. 绘图

本节分类罗列 MATLAB 常用绘图函数,可根据绘图需求选用,具体实现流程不展开说明。

绘图需求 使用函数
二维坐标系绘图 ---
笛卡尔直角坐标系曲线绘制 plot()
x x x 轴、 y y y 轴均为对数坐标绘图 loglog()
x x x 轴为对数坐标、 y y y 轴为线性坐标绘图 semilogx()
y y y 轴为对数坐标、 x x x 轴为线性坐标绘图 semilogy()
双 y y y 轴线性坐标系绘图 plotyy()
极坐标系绘图 polar()
三维坐标系绘图 前置操作:通过 meshgrid() 生成二维网格
空间曲线绘制 plot3()
填充网格型三维曲面绘制 surf()
无填充网格型三维曲面绘制 mesh()
填充网格型三维图形等高线绘制 contourf()
无填充网格型三维图形等高线绘制 contour()
填充网格型三维曲面与等高线组合绘制 surfc()
无填充网格型三维曲面与等高线组合绘制 meshc()
三维形体绘制 patch()
统计类图形绘制 ---
直方图绘制(Histogram) hist()
二维柱状图绘制(Bar charts) bar()
三维柱状图绘制 bar3()
堆叠条形图绘制(Stacked bar charts) bar(y,'stacked')
水平条形图绘制(Horizontal bar charts) barh()
饼图绘制(Pie charts) pie()
三维饼图绘制 pie3()
阶梯图绘制(Stairs charts) stairs()
针状图绘制(Stem charts) stem()

2. 读取图片

执行图像读取操作前,需保证目标文件处于 MATLAB 可访问路径内;若路径未配置,需手动添加文件路径。

下文以图像文件 Peppa_pig.jpg 为例演示读取流程。

调用 imread() 函数完成图像读取,代码示例如下:

matlab 复制代码
I=imread('Peppa_pig.jpg');  % 读取图像文件,结果赋值至变量 I

文件读取完成后,界面输出如下:

完成读取后,可调用 imshow() 函数展示图像,代码示例如下:

matlab 复制代码
imshow(I);   % 展示图像

图像展示效果如下:

二、出图

1. 直接出图

若对输出图像无特殊格式要求,可通过界面路径 文件→另存为 完成图像存储。

该方式会完整保存图形窗口全部区域,包含窗口边缘的灰色底色区域。

对应输出文件效果如下:

原图像不存在的灰色边界区域会同步保存至输出文件。MATLAB 生成的各类坐标图形,采用该方式保存时,同样会保留灰色边界区域。

2. 使用导出设置出图

针对 MATLAB 生成的坐标类图形,可通过界面路径 文件→导出设置 执行导出操作。

如需去除图像四周灰色边界,可在导出设置的大小 选项栏中,勾选放大坐标区至充满图窗选项。

图像分辨率可在渲染 选项栏配置,例如设置分辨率为 600 dpi 600\ \text{dpi} 600 dpi。

文本字体与字号参数,可在字体选项栏进行自定义配置。

参数配置完成后,点击界面右侧应用于图窗,可实时预览调整效果。

配置生效后,图形窗口的灰色边界区域消失,点击导出即可选择目标文件格式完成输出。

该配置方案仅对 MATLAB 原生坐标图形生效;若导出外部读取的图像文件,灰色边界区域仍会被保留。

3. 使用代码出图

针对外部读取的图像文件,可通过代码指令去除边界区域,以下为各类代码实现方案。

3.1 使用 imshow() 设置参数,调试后出图

imshow() 函数配置对应参数,可令图像自适应填充图形窗口,代码示例如下:

matlab 复制代码
imshow(I,'border','tight','initialmagnification','fit'); % 配置参数使图像自适应填充图窗

该指令会将图像缩放至单条边与图形窗口边界重合,实现全屏展示。

完成参数配置后,可通过鼠标拖动调整图形窗口尺寸至合适状态,再结合前文界面导出方式完成保存。

该方法支持可视化调整图像展示尺寸,若要求保留图像原始像素尺寸,可选用下述代码方案。

3.2 使用 imwrite() 命令出图

函数语法格式:imwrite(A,[map,filename])

式中, A A A 代表图像数据矩阵, map \text{map} map 为存储路径, filename \text{filename} filename 为带后缀的完整文件名。

示例:将图像以 tiff \text{tiff} tiff 格式保存至 D 盘目录,代码如下:

matlab 复制代码
imwrite(I,['D:\','Peppa_pig.tif']); % 将图像保存为 tiff 格式

输出文件保留图像原始尺寸,效果如下:

imwrite() 函数不支持 eps \text{eps} eps 格式输出,如需生成该格式文件,需更换其他指令。

3.3 使用 saveas() 命令出图

函数语法格式:saveas(fig,filename,formattype)

式中, fig \text{fig} fig 为目标图形窗口句柄, filename \text{filename} filename 为无后缀文件名, formattype \text{formattype} formattype 为文件格式标识。

示例:将图像保存为 epsc2 \text{epsc2} epsc2 彩色 EPS 格式,代码如下:

matlab 复制代码
imshow(I);                   % 展示图像,生成对应图窗
h=figure(1);                 % 定义变量 h 为 1 号图窗句柄
saveas(h,'Peppa_pig','epsc2'); % 以 EPS 格式保存图窗内容

文件默认存储至 MATLAB 当前工作目录,可手动移动至其他路径。

该方式输出的文件同样保留图像原始尺寸。

3.4 使用 print() 命令出图

函数基础语法格式:print(filename,formattype,formatoptions)

其中 formatoptions \text{formatoptions} formatoptions 为可选配置项,简写格式为 print(filename,formattype)

示例:将图像保存为 eps \text{eps} eps 格式,代码如下:

matlab 复制代码
print('Peppa_pig','-depsc');  % 将图像保存为 eps 格式

输出文件默认存放于 MATLAB 当前工作目录,可手动迁移路径。

4. 使用工具包出图

第三方工具包中,export_fig 具备良好的图像导出能力,该工具包的具体使用方法可查阅对应技术文档,本文不做详细说明。


MATLAB 多条曲线指定部分曲线添加图例

一只佳佳怪 原创,2023-08-13 21:46:30 修改

1 绘制多条曲线

matlab 复制代码
x = 0:pi/100:2*pi;
y1 = sin(x);
y2 = sin(x-0.25);
y3 = sin(x-0.5);
y4 = sin(x-0.75);
y5 = sin(x-1);
y6 = sin(x-1.25);
y7 = sin(x-1.5);
y8 = sin(x-1.75);
figure
plot(x,y1,'y');hold on;
plot(x,y2,'m');hold on;
plot(x,y3,'c');hold on;
plot(x,y4,'r');hold on;
plot(x,y5,'g');hold on;
plot(x,y6,'b');hold on;
plot(x,y7,'k');hold on;
plot(x,y8,'k');hold on;

运行效果:

2 为指定曲线添加图例

为目标曲线绑定对象变量,在 legend 中引用变量完成配置:

matlab 复制代码
x = 0:pi/100:2*pi;
y1 = sin(x);
y2 = sin(x-0.25);
y3 = sin(x-0.5);
y4 = sin(x-0.75);
y5 = sin(x-1);
y6 = sin(x-1.25);
y7 = sin(x-1.5);
y8 = sin(x-1.75);
figure
plot(x,y1,'y');hold on;
plot(x,y2,'m');hold on;
h1=plot(x,y3,'c');hold on;
plot(x,y4,'r');hold on;
h2=plot(x,y5,'g');hold on;
plot(x,y6,'b');hold on;
h3=plot(x,y7,'k');hold on;
plot(x,y8,'k');hold on;
legend([h1,h2,h3],' 曲线 1',' 曲线 2',' 曲线 3')

运行效果:


MATLAB 综合样式配置:字体、线型、符号、文本格式

蟹堡王金牌厨师 原创,2023-07-05 17:13:51 修改

一、坐标轴标签样式配置

1. 字体尺寸、粗细、类型、颜色

matlab 复制代码
xlabel(' 标题 ','FontSize',14,'FontWeight','bold','FontName','Times New Roman','Color','r');

2. 文本旋转

matlab 复制代码
xlabel(' 标题 ','rotation',22);
ylabel(' 标题 ','rotation',-35);

3. 线型、颜色、标记字符汇总

颜色字符 说明 线型字符 说明 标记字符 说明
b 蓝色 - 实线 . 点状
g 绿色 : 点线 s 方形
r 红色 -. 点划线 o 空心圆
c 青色 -- 虚线 x 叉号
m 品红 --- --- + 加号
y 黄色 --- --- * 星号
k 黑色 --- --- d 菱形
w 白色 --- --- v 下三角
--- --- --- --- ^ 上三角
--- --- --- --- < 左三角
--- --- --- --- > 右三角
--- --- --- --- p 五角形
--- --- --- --- h 六角形

基础用法示例:

matlab 复制代码
plot(x,y,'--r')

4. 标记样式明细与进阶用法

标记参数 说明
"o" 空心圆
"+" 加号
"*" 星号
"." 实心点
"x" 叉号
"_" 水平线段
`" "`
"square" 方形
"diamond" 菱形
"^" 上三角
"v" 下三角
">" 右三角
"<" 左三角
"pentagram" 五角形
"hexagram" 六角形
"none" 无标记

进阶代码示例:

matlab 复制代码
% 带连线的标记曲线
x = linspace(0,10,100);
y = exp(x/10).*sin(4*x);
plot(x,y,'-o')
% 仅显示标记
plot(x,y,'o')

% 自定义标记色彩与尺寸
x = linspace(0,10,50);
y = sin(x);
plot(x,y,'-s','MarkerSize',10,...
    'MarkerEdgeColor','red',...
    'MarkerFaceColor',[1 .6 .6])

% 间隔显示标记
plot(x,y,'-*','MarkerIndices',1:10:length(y))

% 极值点标记
x = 1:100;
y = rand(100,1);
idxmin = find(y == max(y));
idxmax = find(y == min(y));
plot(x,y,'-p','MarkerIndices',[idxmin idxmax],...
    'MarkerFaceColor','red',...
    'MarkerSize',15)

% 通过对象变量修改标记
x = linspace(0,10,25);
y = x.^2;
p = plot(x,y,'-s');
p.MarkerSize = 10;
p.MarkerIndices = 1:5:length(y);

二、线条样式配置

  1. 基础线宽与颜色设置
matlab 复制代码
plot(X,Y,'g','Linewidth', 1.2)
  1. RGB 三元组自定义颜色
matlab 复制代码
plot(x,y,'color',[1 0.2 0]);

三、坐标轴刻度与范围配置

  1. 隐藏刻度文本
matlab 复制代码
set(gca,'xticklabel',[]);
set(gca,'yticklabel',[]);
  1. 刻度字体配置
matlab 复制代码
set(gca,'FontSize',12,'Fontname', 'Times New Roman');
  1. 限定坐标轴范围
matlab 复制代码
axis([5 12 0 5])

四、希腊字母与数学符号

  • 上标:使用 ^
  • 下标:使用 _
  • 希腊字母与特殊符号:反斜杠 \ + 字符名称

常用符号:

  • ≤ \leq ≤:\leq
  • ≥ \geq ≥:\geq
  • ≪ \ll ≪:\ll
  • ≫ \gg ≫:\gg

五、图像文本添加与位置控制

1. 基础文本添加

matlab 复制代码
text(3.3,-1.8,' 文本 ','Color','black','FontSize',14,'FontName','Times New Roman','FontWeight','Bold');

2. 依托坐标轴范围定位文本

matlab 复制代码
a=axis;

变量 a \boldsymbol{a} a 存储坐标轴区间 x min , x max , y min , y max x_{\\text{min}},x_{\\text{max}},y_{\\text{min}},y_{\\text{max}} xmin,xmax,ymin,ymax,根据区间数值确定文本坐标。

3. 归一化位置定位

通过 Position 参数以图窗为基准设置文本、图例等元素位置。

六、颜色参考表


reference 与概要

第 1 篇(绘图基础入门)

  • MATLAB 绘图必看,画图大全!MATLAB 绘图基础操作大全---折线图、散点图、颜色样式、线条粗细汇总

    https://blog.csdn.net/qq_45296693/article/details/130814610

    面向零基础使用者,讲解 MATLAB 最核心的入门绘图操作。内容包含图形基础配色、线型、标记符号的使用规则,演示折线图、散点图的标准绘制流程;同时介绍网格开关、单坐标区多曲线绘制、subplot 多子图布局,以及坐标轴、图例的基础调用方式,是入门学习的基础资料。

第 2 篇(通用绘图命令汇总)

  • MATLAB 常用画图命令汇总

    https://blog.csdn.net/User525600/article/details/122910445

    系统性整理 MATLAB 主流绘图指令,覆盖二维散点图、折线图、参数圆、双纵轴图、热力图、Voronoi 图等常见图形。同时配套讲解坐标轴配置、图表标题、文本标注、LaTeX 希腊字母与特殊字符写法,汇总二维场景下全流程辅助命令,适配各类常规绘图需求。

第 3 篇(高阶绘图技巧)

  • Matlab 绘图高效技巧大全:掌握 20 个方法

    https://blog.csdn.net/weixin_51532466/article/details/137237383

    整理 20 类实用进阶绘图方法,拓展绘图应用场景。除常规图形外,重点讲解误差棒图、极坐标图、三维曲面、饼图、直方图、矢量场、三维散点图等类型;同时介绍动态绘图、多项式拟合、图形透明度设置、图形保存等功能,可满足复杂数据可视化需求。

第 4 篇(图形样式精细化调整)

  • Matlab 作图后的各种调整方法------线条、坐标、标题、图例

    https://blog.csdn.net/XTU__zhang/article/details/116270944

    聚焦绘图后的优化工作,引入 gcfgca 两大图形对象。详细讲解线条、坐标轴、标题、图例、网格与边框的全套参数配置方法,可对已生成图表进行精细化美化。

第 5 篇(图表标注基础:标题、轴标签、图例)

第 6 篇(MATLAB 图像导出)

  • MATLAB 的几种常用出图方式

    https://blog.csdn.net/XTU__zhang/article/details/116163268

    全面介绍 MATLAB 各类图像导出方案,包含界面手动保存、导出设置、代码导出、第三方工具包导出四大类;重点讲解去除图窗灰色边界的实操方法,兼顾不同格式、不同使用场景下的出图需求。

第 7 篇(图例高阶用法)

  • Matlab 多条曲线标注某几条曲线的图例 (legend 函数)

    https://blog.csdn.net/iii66yy/article/details/127097167

    针对多曲线图表场景,补充 legend 函数进阶用法。介绍仅为部分曲线添加图例的实现方式,弥补基础用法的局限,适用于多序列数据可视化场景。

第 8 篇(字体、特殊符号、文本美化)

  • MATLAB 修改字体大小,加粗,字体样式,字体颜色,线形,希腊字母,特殊符号,图片文本位置及字体设置等
    https://blog.csdn.net/weixin_48033204/article/details/131414173
    讲解字体样式、字号、颜色、坐标轴旋转、刻度自定义等操作;希腊字母、数学运算符、上下标等特殊字符写法,同时介绍文本定位方法,并附带 RGB、十六进制全套配色表,用于专业图表细节美化。