本篇博客超全整理了matlab经常用到的二维作图和三维作图的常用函数!!
希望对你有帮助^ _ ^!
其中部分的学习案例参考到了知乎上的这篇文章:matlab常用函数
二维作图
定义:二维作图是将平面上的数据点连接起来的平面图形。
分类:直角坐标、极坐标、对数坐标。
plot函数
plot 函数是 MATLAB 中最常用的绘图函数之一,用于创建二维图形。它可以绘制线条、点以及其他自定义图形。
例1--直角坐标
x = 0:0.01:2*pi;
y = sin(x);
plot(x,y)
例2--参数方程
%参数形式
t = 0:0.01:1;
x = t*2*pi;
y = sin(t).*cos(t);
plot(x,y)
例3--同时画多条曲线
x = 0:0.1:3;
y1 = x;
y2 = x.^2;
y3 = x.^3;
plot(x,y1,x,y2,x,y3)
图形标注–线型、颜色、符号
线性
线型可以选择有4种,如下:
符号 | 描述 | 示例 |
---|---|---|
- | 实线 | ![]() |
-- | 虚线 | ![]() |
: | 点线 | ![]() |
-. | 点划线 | ![]() |
符号
标记符号有以下几种:
符号 | 描述 | 示例 |
---|---|---|
. | 点 | 小圆点 |
o | 圆圈 | 空心圆圈 |
x | 叉号 | 交叉符号(×) |
+ | 加号 | 加号符号 |
* | 星号 | 星星符号 |
s | 方形 | 正方形 |
d | 菱形 | 菱形符号 |
^ | 上三角形 | 顶点朝上的三角形 |
v | 下三角形 | 顶点朝下的三角形 |
> | 右三角形 | 顶点朝右的三角形 |
< | 左三角形 | 顶点朝左的三角形 |
p | 五角星 | 五边形符号 |
h | 六边形 | 六边形符号 |
颜色
颜色标记有以下几种:
符号 | 颜色名称 | 示例 |
---|---|---|
r | 红色 | Red |
g | 绿色 | Green |
b | 蓝色 | Blue |
c | 青色 | Cyan |
m | 洋红色 | Magenta |
y | 黄色 | Yellow |
k | 黑色 | Black |
w | 白色 | White |
线条样式、标记符号和颜色的组合使用
例如:
plot(x, y, '-or') % 红色实线,带圆圈标记
plot(x, y, '--*g') % 绿色虚线,带星号标记
plot(x, y, ':b') % 蓝色点线,无标记
plot(x, y, '-.k') % 黑色点划线,无标记
不同顺序的组合写法,结果是相同的。
% 红色实线,带圆圈标记
plot(x, y, '-or') % 顺序:线条样式 → 标记 → 颜色
plot(x, y, 'r-o') % 顺序:颜色 → 标记 → 线条样式
plot(x, y, 'o-r') % 顺序:标记 → 线条样式 → 颜色
因此顺序并不会影响绘图结果。
我们将上面的作图加上样式,如下。
x = 0:0.1:3;
y1 = x;
y2 = x.^2;
y3 = x.^3;
plot(x,y1,'red-',x,y2,'blueo',x,y3,'black-o')
常用参数属性
除了线条样式、标记符号和颜色外,还可以通过属性设置进一步自定义绘图:
属性名称 | 描述 | 示例 |
---|---|---|
LineWidth | 设置线条宽度 | plot(x, y, ‘LineWidth’, 2) |
MarkerSize | 设置标记符号的大小 | plot(x, y, ‘o’, ‘MarkerSize’, 10) |
Color | 设置线条颜色(RGB 三元组) | plot(x, y, ‘Color’, [0.5, 0.2, 0.8]) |
MarkerEdgeColor | 设置标记边缘颜色 | plot(x, y, ‘o’, ‘MarkerEdgeColor’, ‘r’) |
MarkerFaceColor | 设置标记填充颜色 | plot(x, y, ‘o’, ‘MarkerFaceColor’, [0 1 0]) |
为图形添加标注
标注名称 | 描述 | 示例 |
---|---|---|
添加标题 | 使用 title 函数为图形添加标题 | title(‘图形标题’); |
添加x轴标签 | 使用 xlabel 为 x 轴添加标签 | xlabel(‘x 轴标签’); |
添加x轴标签 | 使用 ylabel 为 y 轴添加标签 | ylabel(‘y 轴标签’); |
添加 z 轴标签(3D 图形) | 对于 3D 图形,可以用 zlabel 为 z 轴添加标签。 | zlabel(‘z 轴标签’); |
添加图例 | 使用 legend 函数为图形添加图例,用于标注多条曲线或数据系列。 | legend(‘曲线 1’, ‘曲线 2’, ‘曲线 3’); |
图形中的文本标注 | 使用 text 函数在图形的指定位置添加文本标注。 | text(x, y, ‘标注内容’); |
设置坐标轴范围 | 使用 axis 或 xlim、ylim、zlim 函数。 | axis([xmin, xmax, ymin, ymax]); % 设置坐标轴范围 xlim([xmin, xmax]); % 设置 x 轴范围ylim([ymin, ymax]); % 设置 y 轴范围zlim([zmin, zmax]); % 设置 z 轴范围(3D 图形) |
网格线 | 使用 grid 函数添加网格线。 | grid on; % 打开网格线grid off; % 关闭网格线 |
例如:
% 生成数据
x = linspace(0, 2*pi, 100);
y = sin(x);
% 绘制图形
figure;
plot(x, y, 'b-', 'LineWidth', 2);
% 添加标题和轴标签
title('正弦函数', 'FontSize', 14);
xlabel('x 值', 'FontSize', 12);
ylabel('y 值', 'FontSize', 12);
% 添加图例
legend('y = sin(x)', 'Location', 'northeast');
% 打开网格线
grid on;
例如,下面3D图形标注:
% 生成数据
[x, y] = meshgrid(-2:0.2:2, -2:0.2:2);
z = x .* exp(-x.^2 - y.^2);
% 绘制 3D 图形
figure;
surf(x, y, z);
% 添加标题和轴标签
title('3D 表面图', 'FontSize', 14);
xlabel('X 轴', 'FontSize', 12);
ylabel('Y 轴', 'FontSize', 12);
zlabel('Z 轴', 'FontSize', 12);
% 添加色条
colorbar;
添加文本和箭头注释:
% 生成数据
x = 0:0.1:4*pi;
y = sin(x);
% 绘制图形
figure;
plot(x, y, 'r-', 'LineWidth', 2);
% 添加标题和轴标签
title('正弦波的注释示例', 'FontSize', 14);
xlabel('x', 'FontSize', 12);
ylabel('sin(x)', 'FontSize', 12);
% 添加文本标注
text(pi, 0, '\leftarrow \pi', 'FontSize', 12, 'Color', 'blue');
% 添加箭头注释
annotation('arrow', [0.3, 0.4], [0.5, 0.6], 'Color', 'green');
% 打开网格线
grid on;
使用 LaTeX 数学标注:
% 生成数据
x = linspace(0, 2*pi, 100);
y1 = sin(x);
y2 = cos(x);
% 绘制图形
figure;
plot(x, y1, 'b-', x, y2, 'r--', 'LineWidth', 2);
% 添加标题和轴标签
title('使用 LaTeX 的数学标注', 'Interpreter', 'latex', 'FontSize', 14);
xlabel('$x$', 'Interpreter', 'latex', 'FontSize', 12);
ylabel('函数值', 'FontSize', 12);
% 添加图例
legend('$\sin(x)$', '$\cos(x)$', 'Interpreter', 'latex', 'Location', 'southwest');
% 打开网格线
grid on;
plotyy函数
plotyy 是一个功能强大的函数,用于在同一张图上绘制具有两个 y 轴的图形。它非常适合用于比较具有不同量纲或范围的数据集。plotyy 会创建两个 y 轴,一个在左侧,另一个在右侧,同时共享一个 x 轴。有利于图形数据的对比分析。
plotyy函数的基本语法:
[AX, H1, H2] = plotyy(X1, Y1, X2, Y2)
示例 1:简单双 y 轴绘图
% 数据
x = 0:0.1:10;
y1 = sin(x); % 第一组数据
y2 = cos(x); % 第二组数据
% 使用 plotyy 绘图
[AX, H1, H2] = plotyy(x, y1, x, y2);
% 添加标题和轴标签
title('双 y 轴绘图');
xlabel('X 轴');
ylabel(AX(1), 'sin(x)'); % 左侧 y 轴标签
ylabel(AX(2), 'cos(x)'); % 右侧 y 轴标签
% 设置线条属性
set(H1, 'LineWidth', 2, 'Color', 'b'); % 左侧曲线属性
set(H2, 'LineWidth', 2, 'Color', 'r'); % 右侧曲线属性
示例 2:自定义绘图函数
% 数据
x = 1:10;
y1 = x.^2; % 第一组数据
y2 = log(x); % 第二组数据
% 使用 bar 和 plot 绘制双 y 轴图
[AX, H1, H2] = plotyy(x, y1, x, y2, @bar, @plot);
% 添加标题和轴标签
title('使用自定义绘图函数');
xlabel('X 轴');
ylabel(AX(1), '平方值'); % 左侧 y 轴标签
ylabel(AX(2), '对数值'); % 右侧 y 轴标签
% 设置线条属性
set(H1, 'FaceColor', 'c'); % 左侧柱状图颜色
set(H2, 'LineWidth', 2, 'Color', 'm'); % 右侧曲线颜色
示例 3:调整坐标轴范围和网格线
% 数据
x = 0:0.1:10;
y1 = exp(-0.1*x) .* sin(x); % 第一组数据
y2 = exp(0.1*x); % 第二组数据
% 使用 plotyy 绘图
[AX, H1, H2] = plotyy(x, y1, x, y2);
% 调整坐标轴范围
xlim(AX(1), [0 10]); % 左侧 x 轴范围
ylim(AX(1), [-1 1]); % 左侧 y 轴范围
ylim(AX(2), [0 30]); % 右侧 y 轴范围
% 添加标题和轴标签
title('调整坐标轴范围');
xlabel('X 轴');
ylabel(AX(1), '衰减正弦波');
ylabel(AX(2), '指数函数');
% 添加网格线
grid(AX(1), 'on');
grid(AX(2), 'on');
使用yyaxis 替代plotyy
从 MATLAB R2016a 开始,plotyy 已被推荐用 yyaxis 替代。yyaxis 提供了更灵活和更现代化的双 y 轴绘图方法。
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);
figure;
yyaxis left
plot(x, y1, 'b-', 'LineWidth', 2);
ylabel('sin(x)');
yyaxis right
plot(x, y2, 'r--', 'LineWidth', 2);
ylabel('cos(x)');
title('使用 yyaxis 的双 y 轴绘图');
xlabel('X 轴');
grid on;
subplot函数
在实际应用中,经常需要在一个图形窗口中绘制若干个独立的图形,这就需要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一图形窗口下的不同图形称为子图。
subplot(m,n,p)
该函数把当前窗口分成m×n个绘图区,m行,每行n个绘图区,区号按行优先编号。其中第p个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
y3 = tan(x);
y4 = sin(x).*cos(x);
subplot(2,2,1)
plot(x,y1,'blacko')
subplot(2,2,2)
plot(x,y2,'ro')
subplot(2,2,3)
plot(x,y3,'bo')
subplot(2,2,4)
plot(x,y4,'go')
% 数据
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);
y3 = x.^2;
y4 = exp(-0.1*x) .* sin(x);
% 创建一个新的图形窗口
figure;
% 子图 1:正弦和余弦函数
subplot(2, 2, 1); % 创建2x2的子图网格,并激活第一个子图
plot(x, y1, 'b-', 'LineWidth', 2);
hold on;
plot(x, y2, 'r--', 'LineWidth', 2);
title('正弦和余弦函数');
xlabel('X 轴');
ylabel('函数值');
legend('sin(x)', 'cos(x)');
grid on;
% 子图 2:平方函数
subplot(2, 2, 2);
plot(x, y3, 'g-', 'LineWidth', 2);
title('平方函数');
xlabel('X 轴');
ylabel('平方值');
grid on;
% 子图 3:衰减正弦波
subplot(2, 2, 3);
plot(x, y4, 'm-', 'LineWidth', 2);
title('衰减正弦波');
xlabel('X 轴');
ylabel('振幅');
grid on;
% 子图 4:双 y 轴图(使用 yyaxis)
subplot(2, 2, 4);
yyaxis left
plot(x, y1, 'b-', 'LineWidth', 2);
ylabel('sin(x)');
yyaxis right
plot(x, y2, 'r--', 'LineWidth', 2);
ylabel('cos(x)');
title('双 y 轴图');
xlabel('X 轴');
grid on;
% 调整整个图形的布局
sgtitle('多种图形示例');
其他类型的作图函数
scatter:散点图
scatter函数用于绘制数据点的散点图,适合展示离散数据的分布。
x = randn(1, 100); % 随机生成 100 个点
y = randn(1, 100);
scatter(x, y, 50, 'filled'); % 50 是点的大小
title('散点图');
xlabel('X 轴');
ylabel('Y 轴');
grid on;
bar:柱状图
bar用于绘制柱状图,适合展示分类数据。
categories = {'A', 'B', 'C', 'D'};
values = [5, 10, 15, 20];
bar(values);
set(gca, 'XTickLabel', categories); % 设置分类标签
title('柱状图');
xlabel('类别');
ylabel('值');
grid on;
bar3:三维柱状图
它用于绘制三维柱状图。
data = magic(4); % 生成示例数据
bar3(data);
title('三维柱状图');
xlabel('X 轴');
ylabel('Y 轴');
zlabel('值');
grid on;
histogram:直方图
它用于展示数据的分布情况。
data = randn(1, 1000); % 生成正态分布数据
histogram(data, 20); % 将数据分为 20 个区间
title('直方图');
xlabel('数据值');
ylabel('频率');
grid on;
pie:饼图
它用于展示数据在总量中的占比。
data = [10, 20, 30, 40];
labels = {'A', 'B', 'C', 'D'};
pie(data, labels);
title('饼图');
area:面积图
它用于展示累积数据的面积。
x = 1:10;
y = cumsum(rand(1, 10)); % 累积和
area(x, y);
title('面积图');
xlabel('X 轴');
ylabel('累积值');
grid on;
contour 和 contourf:等高线图
它们用于绘制二维数据的等高线图。
[x, y] = meshgrid(-2:0.1:2, -2:0.1:2);
z = x.^2 + y.^2; % 示例函数
contour(x, y, z, 20); % 20 条等高线
title('等高线图');
xlabel('X 轴');
ylabel('Y 轴');
grid on;
contourf(x, y, z, 20); % 填充等高线图
colorbar; % 添加颜色条
title('填充等高线图');
xlabel('X 轴');
ylabel('Y 轴');
grid on;
quiver:矢量场图
用于绘制方向场或矢量场。
[x, y] = meshgrid(-2:0.5:2, -2:0.5:2);
u = -y; % x 方向的分量
v = x; % y 方向的分量
quiver(x, y, u, v); % 绘制矢量场
title('矢量场图');
xlabel('X 轴');
ylabel('Y 轴');
grid on;
heatmap:热力图
用于展示矩阵数据的大小或强度的分布。
data = rand(5, 5); % 随机生成 5x5 矩阵
heatmap(data);
title('热力图');
stem:离散点图
用于绘制离散数据的棒图。
x = 1:10;
y = rand(1, 10);
stem(x, y, 'filled');
title('离散点图');
xlabel('X 轴');
ylabel('Y 轴');
grid on;
polarplot:极坐标图
用于绘制极坐标数据。
theta = linspace(0, 2*pi, 100);
rho = abs(sin(2*theta));
polarplot(theta, rho);
title('极坐标图');
boxplot:箱线图
用于展示数据分布的统计图。
data = randn(100, 3); % 生成 3 组数据
boxplot(data, 'Labels', {'组 1', '组 2', '组 3'});
title('箱线图');
ylabel('值');
errorbar:误差条图
用于展示数据的误差范围。
x = 1:5;
y = [2, 4, 6, 8, 10];
errors = [0.5, 0.4, 0.6, 0.3, 0.5];
errorbar(x, y, errors, 'o-', 'LineWidth', 1.5);
title('误差条图');
xlabel('X 轴');
ylabel('Y 轴');
grid on;
fill:填充图
用于绘制填充区域的图形。
x = [1, 2, 3, 4, 5];
y1 = [1, 2, 1, 2, 1];
y2 = [2, 3, 2, 3, 2];
fill([x, fliplr(x)], [y1, fliplr(y2)], 'g', 'FaceAlpha', 0.3);
title('填充图');
xlabel('X 轴');
ylabel('Y 轴');
grid on;
三维作图
plot3:三维线图
plot3 是 MATLAB 中用于绘制 三维空间曲线 的函数。它可以用来绘制三维空间中的点、线或曲线。
语法如下:
plot3(X, Y, Z)
plot3(X, Y, Z, LineSpec)
plot3(X, Y, Z, Name, Value)
plot3(ax, ...)
h = plot3(...)
-
X, Y, Z:
-
分别表示三维空间中点的 x、y、z坐标,可以是向量或矩阵。
-
如果 X、Y、Z 是向量,则 plot3 会绘制一条连接这些点的曲线。
-
如果 X、Y、Z 是矩阵,则 plot3 会绘制多条曲线,每列对应一条曲线。
-
-
LineSpec(可选):
-
用于指定线条的样式、颜色和标记。
-
例如:‘r–’ 表示红色虚线,‘b*’ 表示蓝色星号标记。
-
-
Name, Value(可选):
-
用于指定线条的额外属性,例如线宽、标记大小等。
-
例如:‘LineWidth’, 2 设置线宽为 2。
-
-
ax(可选):
- 指定绘图的坐标轴。
-
h(输出):
- 返回绘制的图形对象的句柄。
t = 0:0.01:10; % 参数 t
x = sin(t); % x 坐标
y = cos(t); % y 坐标
z = t; % z 坐标
plot3(x, y, z, 'b-', 'LineWidth', 2); % 绘制蓝色曲线
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('3D Curve: Helix'); % 添加标题
grid on; % 显示网格
绘制两条三维曲线:
t = 0:0.01:10; % 参数 t
x1 = sin(t); % 第一条曲线的 x 坐标
y1 = cos(t); % 第一条曲线的 y 坐标
z1 = t; % 第一条曲线的 z 坐标
x2 = cos(t); % 第二条曲线的 x 坐标
y2 = sin(t); % 第二条曲线的 y 坐标
z2 = t; % 第二条曲线的 z 坐标
plot3(x1, y1, z1, 'r-', 'LineWidth', 2); % 绘制第一条红色曲线
hold on; % 保持当前图形
plot3(x2, y2, z2, 'b--', 'LineWidth', 2); % 绘制第二条蓝色虚线曲线
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('Multiple 3D Curves'); % 添加标题
grid on; % 显示网格
legend('Curve 1', 'Curve 2'); % 添加图例
绘制三维散点图:
x = rand(1, 100); % 随机生成 100 个 x 坐标
y = rand(1, 100); % 随机生成 100 个 y 坐标
z = rand(1, 100); % 随机生成 100 个 z 坐标
plot3(x, y, z, 'ro', 'MarkerSize', 8); % 绘制红色圆圈标记
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('3D Scatter Plot'); % 添加标题
grid on; % 显示网格
mesh函数
mesh 是 MATLAB 中用于绘制 三维网格图 的函数。它通常用于可视化二维平面上的三维数据,例如函数 z=f(x,y) 的曲面。mesh 函数会生成一个由网格线组成的曲面图,网格线的颜色可以根据高度(z 值)变化。
语法:
mesh(X, Y, Z)
mesh(Z)
mesh(..., C)
mesh(ax, ...)
h = mesh(...)
参数说明
-
X, Y:
-
分别表示网格点的 x 和 y 坐标。
-
可以是向量或矩阵。
-
如果 X 和 Y 是向量,则 mesh 会根据向量的长度生成网格。
-
如果 X 和 Y 是矩阵,则它们必须与 Z 的大小相同。
-
-
Z:表示网格点的
-
z 坐标(高度)。
-
必须是一个矩阵。
-
-
C(可选):
-
指定网格线的颜色。
-
如果未指定,则默认使用 Z 的值来确定颜色。
-
-
ax(可选):
- 指定绘图的坐标轴。
-
h(输出):
- 返回绘制的图形对象的句柄。
下面代码绘制了一个函数 z = x ⋅ e − x 2 − y 2 z=x·e^{-x^2-y^2} z=x⋅e−x2−y2的三维网络图。
[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2); % 生成网格点
Z = X .* exp(-X.^2 - Y.^2); % 计算 Z 值
mesh(X, Y, Z); % 绘制网格图
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('3D Mesh Plot'); % 添加标题
colorbar; % 显示颜色条
示例2:使用颜色矩阵
[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2); % 生成网格点
Z = sin(X) + cos(Y); % 计算 Z 值
C = X + Y; % 定义颜色矩阵
mesh(X, Y, Z, C); % 绘制网格图,使用 C 定义颜色
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('3D Mesh Plot with Custom Colors'); % 添加标题
colorbar; % 显示颜色条
示例 3:仅使用 Z 矩阵
下面代码使用 peaks 函数生成数据,并绘制其三维网格图。
Z = peaks(50); % 生成一个 50x50 的峰值函数数据
mesh(Z); % 绘制网格图
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('3D Mesh Plot of Peaks Function'); % 添加标题
colorbar; % 显示颜色条
常用属性:
以下是一些常用的 Name, Value 属性(通过 set 函数或返回的句柄 h 设置):
-
‘EdgeColor’:设置网格线的颜色。
- 例如:‘EdgeColor’, ‘blue’ 将网格线设置为蓝色。
-
‘FaceColor’:设置网格面的颜色。
- 例如:‘FaceColor’, ‘interp’ 使用插值颜色填充网格面。
-
‘LineWidth’:设置网格线的宽度。
-
‘FaceAlpha’:设置网格面的透明度(0 到 1 之间)。
surf函数
surf 是 MATLAB 中用于绘制 三维曲面图 的函数。它通常用于可视化二维平面上的三维数据,例如函数 z=f(x,y) 的曲面。与 mesh 函数不同,surf 会生成一个由颜色填充的曲面图,颜色可以根据高度(z 值)变化。
用法如下:
surf(X, Y, Z)
surf(Z)
surf(..., C)
surf(ax, ...)
h = surf(...)
语法说明:
-
X, Y:分别表示网格点的 x 和 y 坐标。
-
可以是向量或矩阵。
-
如果 X 和 Y 是向量,则 surf 会根据向量的长度生成网格。
-
如果 X 和 Y 是矩阵,则它们必须与 Z 的大小相同。
-
-
Z:表示网格点的 z 坐标(高度)。
- 必须是一个矩阵。
-
C(可选):
-
指定曲面的颜色。
-
如果未指定,则默认使用 Z 的值来确定颜色。
-
-
ax(可选):
- 指定绘图的坐标轴。
-
h(输出):
- 返回绘制的图形对象的句柄。
示例1:该代码绘制了一个函数 z = x ⋅ e − x 2 − y 2 z=x·e^{-x^2-y^2} z=x⋅e−x2−y2的三维网络图。
[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2); % 生成网格点
Z = X .* exp(-X.^2 - Y.^2); % 计算 Z 值
surf(X, Y, Z); % 绘制曲面图
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('3D Surface Plot'); % 添加标题
colorbar; % 显示颜色条
示例2:
[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2); % 生成网格点
Z = sin(X) + cos(Y); % 计算 Z 值
C = X + Y; % 定义颜色矩阵
surf(X, Y, Z, C); % 绘制曲面图,使用 C 定义颜色
xlabel('X'); ylabel('Y'); zlabel('Z'); % 添加坐标轴标签
title('3D Surface Plot with Custom Colors'); % 添加标题
colorbar; % 显示颜色条
示例3:使用 peaks 函数生成数据,并绘制其三维曲面图。
-
‘FaceColor’:设置曲面面的颜色。
- 例如:‘FaceColor’, ‘interp’ 使用插值颜色填充曲面。
-
‘LineWidth’:设置边缘线的宽度。
-
‘FaceAlpha’:设置曲面面的透明度(0 到 1 之间)。
-
‘FaceLighting’:设置曲面的光照效果。
- 例如:‘FaceLighting’, ‘gouraud’ 使用 Gouraud 光照。
surfc函数
在曲面图的基础上,添加等高线。
[x, y] = meshgrid(-2:0.1:2, -2:0.1:2);
z = sin(x) .* cos(y);
surfc(x, y, z);
title('曲面+等高线图');
xlabel('X 轴');
ylabel('Y 轴');
zlabel('Z 轴');
contour3:三维等高线图
绘制三维空间中的等高线。
[x, y] = meshgrid(-2:0.1:2, -2:0.1:2);
z = x.^2 + y.^2;
contour3(x, y, z, 20);
title('三维等高线图');
xlabel('X 轴');
ylabel('Y 轴');
zlabel('Z 轴');
grid on;
scatter3:三维散点图
用于在三维空间中绘制散点。
x = randn(100, 1);
y = randn(100, 1);
z = randn(100, 1);
scatter3(x, y, z, 36, z, 'filled');
title('三维散点图');
xlabel('X 轴');
ylabel('Y 轴');
zlabel('Z 轴');
colorbar;
fill3:三维填充图
用于在三维空间中绘制填充的多边形。
x = [1, 2, 3, 1];
y = [1, 3, 1, 1];
z = [1, 1, 2, 1];
fill3(x, y, z, 'c');
title('三维填充图');
xlabel('X 轴');
ylabel('Y 轴');
zlabel('Z 轴');
grid on;
slice:三维切片图
用于在三维数据集中绘制切片。
[x, y, z] = meshgrid(-2:0.2:2, -2:0.2:2, -2:0.2:2);
v = x .* exp(-x.^2 - y.^2 - z.^2);
slice(x, y, z, v, 0, [], []);
title('三维切片图');
xlabel('X 轴');
ylabel('Y 轴');
zlabel('Z 轴');
colorbar;
matlab二维和三维作图就先总结到这里啦,后续学到相关内容我将继续补充~