Matlab绘图

Matlab绘图

  • [MATLAB 绘图](#MATLAB 绘图)
    • [一、基本绘图函数 plot](#一、基本绘图函数 plot)
      • [1.1 基本语法](#1.1 基本语法)
      • [1.2 样式字符串 s 的格式:](#1.2 样式字符串 s 的格式:)
    • [二、函数绘图 ezplot](#二、函数绘图 ezplot)
      • [2.1 显函数绘图](#2.1 显函数绘图)
      • [2.2 隐函数绘图](#2.2 隐函数绘图)
      • [2.3 参数方程绘图](#2.3 参数方程绘图)
    • 三、其他二维图
      • [3.1 条形图 bar](#3.1 条形图 bar)
      • [3.2 阶梯图 stairs](#3.2 阶梯图 stairs)
      • [3.3 杆图 stem](#3.3 杆图 stem)
      • [3.4 填充图 fill](#3.4 填充图 fill)
      • [3.5 极坐标图 polar](#3.5 极坐标图 polar)
      • [3.6 饼图 pie](#3.6 饼图 pie)
      • [3.7 复数相量图](#3.7 复数相量图)
    • 四、三维绘图函数
      • [4.1 三维线图 plot3](#4.1 三维线图 plot3)
      • [4.2 网格生成 meshgrid](#4.2 网格生成 meshgrid)
      • [4.3 网格图 mesh](#4.3 网格图 mesh)
      • [4.4 曲面图 surf](#4.4 曲面图 surf)
      • [4.5 加边框的网格图 meshz](#4.5 加边框的网格图 meshz)
      • [4.6 球体 sphere](#4.6 球体 sphere)
      • [4.7 圆柱体 cylinder](#4.7 圆柱体 cylinder)
      • [4.8 峰值函数 peak](#4.8 峰值函数 peak)
    • 五、散点图与等高线图
      • [5.1 二维散点图 scatter](#5.1 二维散点图 scatter)
      • [5.2 等高线图 contour](#5.2 等高线图 contour)
      • [5.3 三维散点图 scatter3](#5.3 三维散点图 scatter3)
      • [5.4 三维等高线 contour3](#5.4 三维等高线 contour3)
    • 六、图形控制与标注
      • [6.1 网格线 grid](#6.1 网格线 grid)
      • [6.2 边框 box](#6.2 边框 box)
      • [6.3 标签 xlabel、ylabel、zlabel](#6.3 标签 xlabel、ylabel、zlabel)
      • [6.4 标题 title](#6.4 标题 title)
      • [6.5 添加文本 text、gtext](#6.5 添加文本 text、gtext)
      • [6.6 轴范围控制 axis](#6.6 轴范围控制 axis)
      • [6.7 多图重叠 hold](#6.7 多图重叠 hold)
      • [6.8 新建图形窗口 figure](#6.8 新建图形窗口 figure)
      • [6.9 子图 subplot](#6.9 子图 subplot)

MATLAB 绘图

本篇文档介绍 MATLAB 中常用的绘图函数,包括二维、三维绘图函数及其控制方式,并涵盖坐标轴标注与图形调整指令。

一、基本绘图函数 plot

1.1 基本语法

matlab 复制代码
plot(x, y)                  % 基本绘图
plot(x, y, s)              % 使用样式字符串s绘图
plot(x1, y1, s1, x2, y2, s2)   % 同时绘制多个函数

1.2 样式字符串 s 的格式:

  • 线型:'-'(实线),'--'(虚线),':'(点线),'-.'(点划线)
  • 颜色:'r' 红,'g' 绿,'b' 蓝,'k' 黑,'m' 品红,'c' 青,'y'
  • 标记:'o' 圆圈,'x' 叉号,'+' 加号,'*' 星号
matlab 复制代码
>> x = 0:0.1:2*pi;
>> y1 = sin(x);
>> y2 = cos(x);
>> plot(x, y1, '-r*', x, y2, ':b');

二、函数绘图 ezplot

2.1 显函数绘图

语法:

matlab 复制代码
ezplot('f(x)', [x_min, x_max])

示例:

matlab 复制代码
>> ezplot('sin(x)', [0, 2*pi])

2.2 隐函数绘图

语法:

matlab 复制代码
>> ezplot('f(x,y)', [x_min, x_max, y_min, y_max])

示例:

matlab 复制代码
>> ezplot('x^2 + y^2 - 4')    % 圆的隐函数
matlab 复制代码
>> ezplot('x^2 + y^2 - 4', [1, 2, 1, 2])   

)

2.3 参数方程绘图

语法:

matlab 复制代码
>> ezplot('x(t)', 'y(t)', [t_min, t_max])

示例:

matlab 复制代码
>> ezplot('cos(t)', 'sin(t)', [0, 2*pi])  % 单位圆

三、其他二维图

3.1 条形图 bar

语法:

matlab 复制代码
bar(x, y, s)
  • x表示横坐标
  • y表示纵坐标
  • s与plot中的功能一样

示例:

matlab 复制代码
>> y = [1 3 5 2];
>> bar(["a" "b" "c" "d"], y)

3.2 阶梯图 stairs

语法:

matlab 复制代码
stairs(x, y, s)
  • x表示横坐标,只能为数值型
  • y表示纵坐标
  • s与plot中的功能一样

示例:

matlab 复制代码
>> y = [1 3 5 2];
>> stairs([1 2 3 7], y)

3.3 杆图 stem

语法:

matlab 复制代码
stem(x, y, s)
  • x表示横坐标
  • y表示纵坐标
  • s与plot中的功能一样

示例:

matlab 复制代码
>> y = [1 3 5 2];
>> stem([1 2 3 7], y)

3.4 填充图 fill

绘制x,y对应位置上的元素构成的点围成的图像
语法:

matlab 复制代码
fill(x, y, c)
  • x表示横坐标
  • y表示纵坐标
  • c表示颜色

示例:

matlab 复制代码
>> x = [0 1 1 0];
>> y = [0 0 1 1];
>> fill(x, y, 'g')

3.5 极坐标图 polar

语法:

matlab 复制代码
polar(theta, rho, s)
  • theta表示极角
  • rho表示长度
  • s与plot中的功能一样

示例:

matlab 复制代码
>> theta = linspace(0, 2*pi, 100);
>> r = sin(2*theta);
>> polar(theta, r)

3.6 饼图 pie

语法:

matlab 复制代码
pie(x, explode, labels)
  • x表示数值
  • explode为逻辑向量,表示是否要把对应扇形炸开
  • labels为向量,表示对应扇形的标签

示例:

matlab 复制代码
>> x = [1 2 3];
>> pie(x)
matlab 复制代码
>> x = [1 2 3];
>> pie(x, [1 0 0])
matlab 复制代码
>> x = [1 2 3];
>> pie(x, [1 0 0], ["a" "b" "c"])

3.7 复数相量图

语法:

matlab 复制代码
compass(z, s)
  • z是一个复数向量
  • s与plot中的功能一样

示例:

matlab 复制代码
>> z = [1+2i, 2+1i, 1-1i];
>> compass(z)

四、三维绘图函数

4.1 三维线图 plot3

语法:

matlab 复制代码
plot(x, y, z)                  % 基本绘图
plot(x, y, z, s)              % 使用样式字符串s绘图
plot(x1, y1, z1, s1, x2, y2, z2, s2)   % 同时绘制多个函数

示例:

matlab 复制代码
>> t = linspace(0, 10, 100);
>> plot3(cos(t), sin(t), t)

4.2 网格生成 meshgrid

语法:

复制代码
[X,Y] = meshgrid(x,y)

等价于X=ones(size(y))*x,Y=y*ones(size(x))y得接转置符号'

matlab 复制代码
>> x = 1:3;
>> y = (10:10:30)';

>> X = ones(size(y)) * x, Y = y * ones(size(x))

X =
     1     2     3
     1     2     3
     1     2     3

Y =
    10    10    10
    20    20    20
    30    30    30

>> [X, Y]=meshgrid(x, y)

X =

     1     2     3
     1     2     3
     1     2     3


Y =

    10    10    10
    20    20    20
    30    30    30

4.3 网格图 mesh

语法:

matlab 复制代码
mesh(x, y, z)
  • x横坐标
  • y纵坐标
  • z第三维坐标

示例:

matlab 复制代码
>> [x, y] = meshgrid(-5:0.5:5);
>> z = sin(sqrt(x.^2 + y.^2));
>> mesh(x, y, z)

4.4 曲面图 surf

语法:

matlab 复制代码
surf(x, y, z)
  • x横坐标
  • y纵坐标
  • z第三维坐标

示例:

matlab 复制代码
>> [x, y] = meshgrid(-5:0.5:5);
>> z = sin(sqrt(x.^2 + y.^2));
>> surf(x, y, z)

4.5 加边框的网格图 meshz

语法:

matlab 复制代码
meshz(x, y, z)
  • x横坐标
  • y纵坐标
  • z第三维坐标

示例:

matlab 复制代码
>> [x, y] = meshgrid(-5:0.5:5);
>> z = sin(sqrt(x.^2 + y.^2));
>> meshz(x, y, z)

4.6 球体 sphere

语法:

matlab 复制代码
[x, y, z] = sphere(n)
  • n:球面在经纬方向的分段数,决定了生成球面的精细程度。
    • 例如,n = 10 表示经纬线各划分为 10 段,总共 (n+1)×(n+1) 个点。
    • n 越大,球面越平滑;n 越小,球体越粗糙。
  • 返回值 x, y, z(n+1)×(n+1) 的矩阵,表示球面坐标网格。

示例:

matlab 复制代码
>> [x, y, z] = sphere(30);
>> surf(x, y, z)
matlab 复制代码
>> [x, y, z] = sphere(90);
>> surf(x, y, z)

4.7 圆柱体 cylinder

语法:

matlab 复制代码
[x, y, z] = cylinder(R, n)
  • R:一个向量,指定每层的半径,例如 [1 0.5 0] 表示从底到顶的变化。
  • n:圆周方向上的分段数量(将圆平均划分为 n 等分)。
  • 返回值 x, y, z(n+1)×length(R) 的矩阵,表示圆柱的坐标点。

示例:

matlab 复制代码
>> [x, y, z] = cylinder(1, 50);
>> surf(x, y, z)
matlab 复制代码
[x, y, z] = cylinder(1, 500);
surf(x, y, z)
matlab 复制代码
>> [x, y, z] = cylinder([1 0]);
>> surf(x, y, z)
matlab 复制代码
>> [x, y, z] = cylinder([1 0.5 0 1]);
>> surf(x, y, z)

4.8 峰值函数 peak

语法:

matlab 复制代码
Z = peaks(n)
[X, Y, Z] = peaks(n)
  • n:用于生成 n×n 网格的数据点数,决定函数采样精度。
    • 越大越精细,默认值为 49。
    • peaks 会返回一个形如山峰的三维函数,用于演示 surf、mesh、contour 等图形。

示例:

matlab 复制代码
>> z = peaks(25);
>> surf(z)
matlab 复制代码
>> [X, Y, Z] = peaks(50);
>> surf(X, Y, Z)

五、散点图与等高线图

5.1 二维散点图 scatter

matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)

5.2 等高线图 contour

matlab 复制代码
contour(x, y, z)
matlab 复制代码
>> x = -2*pi:0.1:2*pi;
>> y = -2*pi:0.1:2*pi;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(X) .* cos(Y);
>> contour(X, Y, Z)

5.3 三维散点图 scatter3

matlab 复制代码
z = rand(1, 50);
scatter3(x, y, z)
matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> z = rand(1, 50);
>> scatter3(x, y, z)

5.4 三维等高线 contour3

matlab 复制代码
contour3(x, y, z)
matlab 复制代码
>> x = -2*pi:0.1:2*pi;
>> y = -2*pi:0.1:2*pi;
>> [X, Y] = meshgrid(x, y);
>> Z = sin(X) .* cos(Y);
>> contour3(X, Y, Z)

六、图形控制与标注

6.1 网格线 grid

matlab 复制代码
grid on
grid off

示例:

matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> grid on

6.2 边框 box

matlab 复制代码
box on
box off

示例:

matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> grid on
>> box on

6.3 标签 xlabel、ylabel、zlabel

matlab 复制代码
xlabel('X 轴')
ylabel('Y 轴')
zlabel('Z 轴')

示例:

matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> xlabel('X 轴')
>> ylabel('Y 轴')

6.4 标题 title

matlab 复制代码
title('绘图标题')

示例:

matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> xlabel('X 轴')
>> ylabel('Y 轴')
>> title('散点图')

6.5 添加文本 text、gtext

语法:

matlab 复制代码
text(x, y, '文本标注')
gtext('点击位置添加')

text将在位置 ( x , y ) (x,y) (x,y)处添加文本,gtext执行后鼠标点击在哪里就会在哪里添加文本。
示例:

matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> text(0.1, 0.2, '文本标注')
>> gtext('点击位置添加')

6.6 轴范围控制 axis

matlab 复制代码
axis([xmin xmax ymin ymax])   % 设置 XY 轴范围
axis auto                     % 将坐标轴范围返回到默认状态

示例:

matlab 复制代码
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> axis([0 0.5 0 0.5])
>> axis auto



6.7 多图重叠 hold

matlab 复制代码
hold on    % 继续在当前图形上绘图
hold off   % 关闭重叠绘图

示例:

matlab 复制代码
>> x = 1:5

x =

     1     2     3     4     5

>> y = 1:5

y =

     1     2     3     4     5

>> plot(x, y)
matlab 复制代码
>> hold on
>> plot([2 3 5], [8 10 15])

6.8 新建图形窗口 figure

matlab 复制代码
figure      % 新窗口
figure(2)   % 指定编号

示例:

matlab 复制代码
>> figure
>> figure(2)
>> figure(10)

6.9 子图 subplot

matlab 复制代码
>> subplot(2, 2, 1)   % 创建 2x2 网格的第1个子图
>> plot([1:5], [1:5])
>> subplot(2, 2, 2)   % 创建 2x2 网格的第2个子图
>> plot(sin([1:5]), cos([1:5]))
>> subplot(2, 2, 3)   % 创建 2x2 网格的第3个子图
>> plot([1:5], [1:5].^2)
>> subplot(2, 2, 4)   % 创建 2x2 网格的第4个子图
>> plot([1:5], [1:5].^3)
相关推荐
机器学习之心1 天前
MATLAB基于改进云物元的模拟机协同训练质量评价
matlab·改进云物元
ytttr8731 天前
MATLAB实现经验模态分解(EMD)与希尔伯特变换获取能量谱
人工智能·python·matlab
t198751281 天前
基于多假设跟踪(MHT)算法的MATLAB实现
开发语言·matlab
机器学习之心1 天前
MATLAB多子种群混沌自适应哈里斯鹰算法优化BP神经网络回归预测
神经网络·算法·matlab
π同学2 天前
基于Matlab的递推最小二乘法参数估计
matlab·最小二乘法
小喵要摸鱼2 天前
【MATLBA】使用教程
matlab
listhi5202 天前
基于空时阵列最佳旋转角度的卫星导航抗干扰信号处理的完整MATLAB仿真
开发语言·matlab·信号处理
88号技师2 天前
2025年7月一区SCI优化算法-Logistic-Gauss Circle optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
yugi9878382 天前
基于MATLAB的心电信号去噪
开发语言·matlab
gihigo19983 天前
MATLAB使用遗传算法解决车间资源分配动态调度问题
算法·matlab