MATLAB三维绘图高级三维绘图
Posted zhicungaoyuan-mingzhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB三维绘图高级三维绘图相关的知识,希望对你有一定的参考价值。
MATLAB三维绘图(五)高级三维绘图
1、colorbar查看三维绘图中的内建颜色表,示例:
%% 画三维图
clear; clc; close all;
[x, y] = meshgrid(-3:.2:3,-3:.2:3); % 生成网格
z = x.^2 + x.*y + y.^2; % z的表达式
subplot(1,2,1);
surf( x, y, z); % 画三维图
box on;
set(gca,'FontSize', 16,'xLim',[-4 4],'yLim',[-4 4]); % 设置字体颜色和坐标
zlabel('z'); xlabel('x'); ylabel('y');
subplot(1,2,2);
imagesc(z); % 获取在z轴上的颜色深度表
colorbar; % 显示颜色条
axis square; % 坐标相等
xlabel('x'); ylabel('y');
效果显示:
2、使用colormap设置指定的颜色表,示例:
%% 使用colormap函数指定使用的颜色表
clear; clc; close all;
x=-10:0.1:10; %绘图数据
y=-10:0.1:10;
[X,Y]=meshgrid(x,y);
z=X.^2+Y.^2;
figure; %图形窗口
surf(x,y,z); %三维图的绘制函数
colormap('cool'); %设置颜色
shading interp;
axis square; %坐标轴设置
xlabel('x'); %图形标注
ylabel('y');
zlabel('z');
效果显示:
3、使用view函数设定观察三维图形的视角,示例:
%% 使用view设定不同的视角去看图形
clear; clc; close all;
sphere(50); % 画球
shading flat; % 显示风格
material shiny;
axis vis3d off; % axes画板
set(gcf,'Color',[1 1 1]); % 设置figure板为白色
view(-45,20); % 设置固定角度去看图
效果显示:
4、使用light函数增加光照,示例:
%% 增加光照
clear; clc; close all;
sphere(50); % 画球
shading flat; % 显示风格
light('Position',[1 3 2]); % 光照的位置
light('Position',[-3 -1 3]);
material shiny;
axis vis3d off; % axes画板
set(gcf,'Color',[1 1 1]); % 设置figure板为白色
效果显示:
5、获取light函数句柄设置使用光照的颜色,示例:
%% 获取光照句柄显示不同的光照的效果
clear; clc; close all;
[X, Y, Z] = sphere(64); % 画球,并且获取坐标值
h = surf(X, Y, Z);
axis square vis3d off; % 坐标尺度相同,并且不显示axes画板
reds = zeros(256, 3); % 创建一个256*3的零矩阵
reds(:, 1) = (0:256.-1)/255;
colormap(reds); % 显示颜色
shading interp;
lighting phong; % 设置光照
set(h, 'AmbientStrength', 0.75, 'DiffuseStrength', 0.5);
L1 = light('Position', [-1, -1, -1]); % 获取光照的位置句柄
set(L1, 'Position', [-1, -1, 1]); % 补光
set(L1, 'Color', 'g'); % 补绿光
效果显示:
6、显示光的效果,示例:
%% 显示光的效果
clear; clc; close all;
v = [0 0 0; 1 0 0 ; 1 1 0; 0 1 0; 0.25 0.25 1; ...
0.75 0.25 1; 0.75 0.75 1; 0.25 0.75 1];
f = [1 2 3 4; 5 6 7 8; 1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8];
subplot(1,2,1);
patch('Vertices', v, 'Faces', f, ...
'FaceVertexCData', hsv(6), 'FaceColor', 'flat');
view(3);
axis square tight;
grid on;
subplot(1,2,2);
patch('Vertices', v, 'Faces', f, ...
'FaceVertexCData', hsv(8), 'FaceColor', 'interp');
view(3);
axis square tight;
grid on;
效果显示:
7、加载MATLAB提供的数据显示一个三维地图效果,示例:
%% 绘制地图
clear; clc; close all;
load cape
X=conv2(ones(9,9)/81,cumsum(cumsum(randn(100,100)),2));
surf(X,'EdgeColor','none','EdgeLighting','Phong',...
'FaceColor','interp');
colormap(map);
caxis([-10,300]);
grid off;
axis off;
效果显示:
以上是关于MATLAB三维绘图高级三维绘图的主要内容,如果未能解决你的问题,请参考以下文章