Matlab绘图
Matlab绘图
- MATLAB 绘图
- 一、基本绘图函数 plot
- 1.1 基本语法
- 1.2 样式字符串 s 的格式:
- 二、函数绘图 ezplot
- 2.1 显函数绘图
- 2.2 隐函数绘图
- 2.3 参数方程绘图
- 三、其他二维图
- 3.1 条形图 bar
- 3.2 阶梯图 stairs
- 3.3 杆图 stem
- 3.4 填充图 fill
- 3.5 极坐标图 polar
- 3.6 饼图 pie
- 3.7 复数相量图
- 四、三维绘图函数
- 4.1 三维线图 plot3
- 4.2 网格生成 meshgrid
- 4.3 网格图 mesh
- 4.4 曲面图 surf
- 4.5 加边框的网格图 meshz
- 4.6 球体 sphere
- 4.7 圆柱体 cylinder
- 4.8 峰值函数 peak
- 五、散点图与等高线图
- 5.1 二维散点图 scatter
- 5.2 等高线图 contour
- 5.3 三维散点图 scatter3
- 5.4 三维等高线 contour3
- 六、图形控制与标注
- 6.1 网格线 grid
- 6.2 边框 box
- 6.3 标签 xlabel、ylabel、zlabel
- 6.4 标题 title
- 6.5 添加文本 text、gtext
- 6.6 轴范围控制 axis
- 6.7 多图重叠 hold
- 6.8 新建图形窗口 figure
- 6.9 子图 subplot
MATLAB 绘图
本篇文档介绍 MATLAB 中常用的绘图函数,包括二维、三维绘图函数及其控制方式,并涵盖坐标轴标注与图形调整指令。
一、基本绘图函数 plot
1.1 基本语法
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'
叉号,'+'
加号,'*'
星号
>> x = 0:0.1:2*pi;
>> y1 = sin(x);
>> y2 = cos(x);
>> plot(x, y1, '-r*', x, y2, ':b');
二、函数绘图 ezplot
2.1 显函数绘图
语法:
ezplot('f(x)', [x_min, x_max])
示例:
>> ezplot('sin(x)', [0, 2*pi])
2016)
2.2 隐函数绘图
语法:
>> ezplot('f(x,y)', [x_min, x_max, y_min, y_max])
示例:
>> ezplot('x^2 + y^2 - 4') % 圆的隐函数
>> ezplot('x^2 + y^2 - 4', [1, 2, 1, 2])
)
2.3 参数方程绘图
语法:
>> ezplot('x(t)', 'y(t)', [t_min, t_max])
示例:
>> ezplot('cos(t)', 'sin(t)', [0, 2*pi]) % 单位圆
三、其他二维图
3.1 条形图 bar
语法:
bar(x, y, s)
- x表示横坐标
- y表示纵坐标
- s与plot中的功能一样
示例:
>> y = [1 3 5 2];
>> bar(["a" "b" "c" "d"], y)
3.2 阶梯图 stairs
语法:
stairs(x, y, s)
- x表示横坐标,只能为数值型
- y表示纵坐标
- s与plot中的功能一样
示例:
>> y = [1 3 5 2];
>> stairs([1 2 3 7], y)
3.3 杆图 stem
语法:
stem(x, y, s)
- x表示横坐标
- y表示纵坐标
- s与plot中的功能一样
示例:
>> y = [1 3 5 2];
>> stem([1 2 3 7], y)
3.4 填充图 fill
绘制x,y对应位置上的元素构成的点围成的图像
语法:
fill(x, y, c)
- x表示横坐标
- y表示纵坐标
- c表示颜色
示例:
>> x = [0 1 1 0];
>> y = [0 0 1 1];
>> fill(x, y, 'g')
3.5 极坐标图 polar
语法:
polar(theta, rho, s)
- theta表示极角
- rho表示长度
- s与plot中的功能一样
示例:
>> theta = linspace(0, 2*pi, 100);
>> r = sin(2*theta);
>> polar(theta, r)
3.6 饼图 pie
语法:
pie(x, explode, labels)
- x表示数值
- explode为逻辑向量,表示是否要把对应扇形炸开
- labels为向量,表示对应扇形的标签
示例:
>> x = [1 2 3];
>> pie(x)
>> x = [1 2 3];
>> pie(x, [1 0 0])
>> x = [1 2 3];
>> pie(x, [1 0 0], ["a" "b" "c"])
3.7 复数相量图
语法:
compass(z, s)
- z是一个复数向量
- s与plot中的功能一样
示例:
>> z = [1+2i, 2+1i, 1-1i];
>> compass(z)
四、三维绘图函数
4.1 三维线图 plot3
语法:
plot(x, y, z) % 基本绘图
plot(x, y, z, s) % 使用样式字符串s绘图
plot(x1, y1, z1, s1, x2, y2, z2, s2) % 同时绘制多个函数
示例:
>> 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
得接转置符号'
>> x = 1:3;
>> y = (10:10:30)';>> X = ones(size(y)) * x, Y = y * ones(size(x))X =1 2 31 2 31 2 3Y =10 10 1020 20 2030 30 30>> [X, Y]=meshgrid(x, y)X =1 2 31 2 31 2 3Y =10 10 1020 20 2030 30 30
4.3 网格图 mesh
语法:
mesh(x, y, z)
- x横坐标
- y纵坐标
- z第三维坐标
示例:
>> [x, y] = meshgrid(-5:0.5:5);
>> z = sin(sqrt(x.^2 + y.^2));
>> mesh(x, y, z)
4.4 曲面图 surf
语法:
surf(x, y, z)
- x横坐标
- y纵坐标
- z第三维坐标
示例:
>> [x, y] = meshgrid(-5:0.5:5);
>> z = sin(sqrt(x.^2 + y.^2));
>> surf(x, y, z)
4.5 加边框的网格图 meshz
语法:
meshz(x, y, z)
- x横坐标
- y纵坐标
- z第三维坐标
示例:
>> [x, y] = meshgrid(-5:0.5:5);
>> z = sin(sqrt(x.^2 + y.^2));
>> meshz(x, y, z)
4.6 球体 sphere
语法:
[x, y, z] = sphere(n)
n
:球面在经纬方向的分段数,决定了生成球面的精细程度。- 例如,
n = 10
表示经纬线各划分为 10 段,总共(n+1)×(n+1)
个点。 n
越大,球面越平滑;n
越小,球体越粗糙。
- 例如,
- 返回值
x, y, z
是(n+1)×(n+1)
的矩阵,表示球面坐标网格。
示例:
>> [x, y, z] = sphere(30);
>> surf(x, y, z)
>> [x, y, z] = sphere(90);
>> surf(x, y, z)
4.7 圆柱体 cylinder
语法:
[x, y, z] = cylinder(R, n)
R
:一个向量,指定每层的半径,例如[1 0.5 0]
表示从底到顶的变化。n
:圆周方向上的分段数量(将圆平均划分为n
等分)。- 返回值
x, y, z
是(n+1)×length(R)
的矩阵,表示圆柱的坐标点。
示例:
>> [x, y, z] = cylinder(1, 50);
>> surf(x, y, z)
[x, y, z] = cylinder(1, 500);
surf(x, y, z)
>> [x, y, z] = cylinder([1 0]);
>> surf(x, y, z)
>> [x, y, z] = cylinder([1 0.5 0 1]);
>> surf(x, y, z)
4.8 峰值函数 peak
语法:
Z = peaks(n)
[X, Y, Z] = peaks(n)
n
:用于生成n×n
网格的数据点数,决定函数采样精度。- 越大越精细,默认值为 49。
peaks
会返回一个形如山峰的三维函数,用于演示 surf、mesh、contour 等图形。
示例:
>> z = peaks(25);
>> surf(z)
>> [X, Y, Z] = peaks(50);
>> surf(X, Y, Z)
五、散点图与等高线图
5.1 二维散点图 scatter
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
5.2 等高线图 contour
contour(x, y, z)
>> 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
z = rand(1, 50);
scatter3(x, y, z)
>> x = rand(1, 50);
>> y = rand(1, 50);
>> z = rand(1, 50);
>> scatter3(x, y, z)
5.4 三维等高线 contour3
contour3(x, y, z)
>> 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
grid on
grid off
示例:
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> grid on
6.2 边框 box
box on
box off
示例:
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> grid on
>> box on
6.3 标签 xlabel、ylabel、zlabel
xlabel('X 轴')
ylabel('Y 轴')
zlabel('Z 轴')
示例:
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> xlabel('X 轴')
>> ylabel('Y 轴')
6.4 标题 title
title('绘图标题')
示例:
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> xlabel('X 轴')
>> ylabel('Y 轴')
>> title('散点图')
6.5 添加文本 text、gtext
语法:
text(x, y, '文本标注')
gtext('点击位置添加')
text
将在位置 ( x , y ) (x,y) (x,y)处添加文本,gtext
执行后鼠标点击在哪里就会在哪里添加文本。
示例:
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> text(0.1, 0.2, '文本标注')
>> gtext('点击位置添加')
6.6 轴范围控制 axis
axis([xmin xmax ymin ymax]) % 设置 XY 轴范围
axis auto % 将坐标轴范围返回到默认状态
示例:
>> x = rand(1, 50);
>> y = rand(1, 50);
>> scatter(x, y)
>> axis([0 0.5 0 0.5])
>> axis auto
6.7 多图重叠 hold
hold on % 继续在当前图形上绘图
hold off % 关闭重叠绘图
示例:
>> x = 1:5x =1 2 3 4 5>> y = 1:5y =1 2 3 4 5>> plot(x, y)
>> hold on
>> plot([2 3 5], [8 10 15])
6.8 新建图形窗口 figure
figure % 新窗口
figure(2) % 指定编号
示例:
>> figure
>> figure(2)
>> figure(10)
6.9 子图 subplot
>> 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)