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)
相关推荐
Expecto015 小时前
Matlab数值计算
matlab·数值计算
Matlab仿真实验室15 小时前
基于Matlab实现LDA算法
开发语言·算法·matlab
三三十二18 小时前
MATLAB实战:四旋翼姿态控制仿真方案
开发语言·matlab
机器学习之心20 小时前
Matlab实现LSTM-SVM回归预测,作者:机器学习之心
机器学习·matlab·lstm·lstm-svm
t198751281 天前
matlab实现求解兰伯特问题
开发语言·算法·matlab
是数学系的小孩儿1 天前
20250531MATLAB三维绘图
开发语言·数学·matlab·电脑
机器学习之心HML2 天前
聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化
开发语言·matlab·聚类
机器学习之心2 天前
光伏功率预测 | BiLSTM多变量单步光伏功率预测(Matlab完整源码和数据)
matlab·bilstm·光伏功率预测
机器学习之心3 天前
分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类
matlab·attention·cnn-lstm-att·高光谱数据分类