三维绘图 #
一、三维曲线 #
1.1 plot3函数 #
matlab
% 基本三维曲线
t = 0:0.1:10*pi;
x = sin(t);
y = cos(t);
z = t;
plot3(x, y, z);
% 多条曲线
plot3(sin(t), cos(t), t, cos(t), sin(t), t);
legend('螺旋线1', '螺旋线2');
% 设置线型
plot3(x, y, z, 'r-', 'LineWidth', 2);
1.2 三维散点图 #
matlab
% scatter3
x = randn(100, 1);
y = randn(100, 1);
z = randn(100, 1);
scatter3(x, y, z, 50, 'filled');
% 带颜色
colors = z;
scatter3(x, y, z, 50, colors, 'filled');
colorbar;
二、三维曲面 #
2.1 meshgrid创建网格 #
matlab
% 创建网格
[X, Y] = meshgrid(-2:0.2:2);
% 计算Z值
Z = X .* exp(-X.^2 - Y.^2);
% 绘制曲面
mesh(X, Y, Z);
2.2 mesh函数 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
% 网格图
mesh(X, Y, Z);
title('mesh网格图');
% 带等高线
meshc(X, Y, Z);
% 带帷幕
meshz(X, Y, Z);
2.3 surf函数 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
% 曲面图
surf(X, Y, Z);
title('surf曲面图');
% 带等高线
surfc(X, Y, Z);
% 光照效果
surfl(X, Y, Z);
shading interp;
colormap copper;
2.4 曲面属性 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = sin(X) + cos(Y);
s = surf(X, Y, Z);
s.FaceColor = 'interp'; % 插值颜色
s.EdgeColor = 'none'; % 无边线
s.FaceAlpha = 0.8; % 透明度
shading flat; % 平面着色
shading interp; % 插值着色
shading faceted; % 分面着色(默认)
三、等高线图 #
3.1 二维等高线 #
matlab
[X, Y] = meshgrid(-2:0.1:2);
Z = X.^2 + Y.^2;
% 基本等高线
contour(X, Y, Z);
% 指定等高线数量
contour(X, Y, Z, 20);
% 指定等高线值
contour(X, Y, Z, [1 4 9 16]);
% 填充等高线
contourf(X, Y, Z, 20);
colorbar;
3.2 三维等高线 #
matlab
[X, Y] = meshgrid(-2:0.1:2);
Z = X.^2 + Y.^2;
% 三维等高线
contour3(X, Y, Z, 20);
3.3 标注等高线 #
matlab
[X, Y] = meshgrid(-2:0.1:2);
Z = X.^2 + Y.^2;
[C, h] = contour(X, Y, Z);
clabel(C, h); % 标注所有等高线
clabel(C, h, [1 4 9]); % 标注指定等高线
四、特殊三维图形 #
4.1 柱状图 #
matlab
% 三维柱状图
Z = [1 2 3; 4 5 6; 7 8 9];
bar3(Z);
% 水平柱状图
bar3h(Z);
4.2 饼图 #
matlab
data = [30 20 25 15 10];
pie3(data);
4.3 瀑布图 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
waterfall(X, Y, Z);
4.4 带状图 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
ribbon(Y, Z);
4.5 三维火柴杆图 #
matlab
x = 0:0.5:10;
y = sin(x);
z = cos(x);
stem3(x, y, z);
五、视图控制 #
5.1 视角设置 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X, Y, Z);
% 设置视角
view(45, 30); % 方位角45度,仰角30度
view(2); % 二维视图
view(3); % 三维视图(默认)
% 获取当前视角
[az, el] = view;
5.2 旋转交互 #
matlab
% 开启旋转模式
rotate3d on;
% 关闭
rotate3d off;
5.3 坐标轴设置 #
matlab
surf(X, Y, Z);
% 等比例
axis equal;
% 紧凑
axis tight;
% 隐藏坐标轴
axis off;
% 显示坐标轴
axis on;
% 设置范围
axis([-2 2 -2 2 -1 1]);
六、颜色和光照 #
6.1 颜色映射 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X, Y, Z);
% 内置颜色映射
colormap jet; % 彩虹色
colormap hot; % 热色
colormap cool; % 冷色
colormap parula; % MATLAB默认
colormap gray; % 灰度
% 自定义颜色映射
cmap = [linspace(0,1,256)' linspace(0,1,256)' ones(256,1)];
colormap(cmap);
% 显示颜色条
colorbar;
6.2 光照效果 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
surf(X, Y, Z);
% 添加光源
light('Position', [1 1 1], 'Style', 'infinite');
lighting gouraud; % 光照模式: flat, gouraud, phong
% 材质属性
material shiny; % 光泽: dull, matte, shiny
6.3 透明度 #
matlab
[X, Y] = meshgrid(-2:0.2:2);
Z = X .* exp(-X.^2 - Y.^2);
s = surf(X, Y, Z);
% 设置透明度
s.FaceAlpha = 0.5; % 半透明
s.FaceAlpha = 'texturemap';
alpha(0.5); % 全局透明度
七、实用示例 #
7.1 球面 #
matlab
% 方法1:sphere函数
[x, y, z] = sphere(50);
surf(x, y, z);
axis equal;
% 方法2:参数方程
theta = linspace(0, 2*pi, 50);
phi = linspace(0, pi, 50);
[Theta, Phi] = meshgrid(theta, phi);
r = 1;
X = r * sin(Phi) .* cos(Theta);
Y = r * sin(Phi) .* sin(Theta);
Z = r * cos(Phi);
surf(X, Y, Z);
axis equal;
7.2 圆环 #
matlab
% 圆环面
R = 2; % 大半径
r = 0.5; % 小半径
theta = linspace(0, 2*pi, 50);
phi = linspace(0, 2*pi, 50);
[Theta, Phi] = meshgrid(theta, phi);
X = (R + r*cos(Phi)) .* cos(Theta);
Y = (R + r*cos(Phi)) .* sin(Theta);
Z = r * sin(Phi);
surf(X, Y, Z);
axis equal;
7.3 多个曲面 #
matlab
figure;
hold on;
% 曲面1
[X1, Y1] = meshgrid(-2:0.2:2);
Z1 = X1.^2 + Y1.^2;
surf(X1, Y1, Z1, 'FaceAlpha', 0.5);
% 曲面2
[X2, Y2] = meshgrid(-2:0.2:2);
Z2 = 4 - X2.^2 - Y2.^2;
surf(X2, Y2, Z2, 'FaceAlpha', 0.5);
hold off;
八、总结 #
本章学习了:
- 三维曲线:plot3、scatter3
- 三维曲面:mesh、surf、meshc、surfc
- 等高线:contour、contourf、contour3
- 特殊图形:bar3、pie3、waterfall
- 视图控制:view、rotate3d、axis
- 颜色光照:colormap、light、alpha
下一章将学习图形属性设置。
最后更新:2026-03-27