MATLAB 如何在同一图中绘制3D图的多个视图(视角)?

我有一个 3D 图形,包含若干绘图对象。我想从几个不同的角度显示此图形,将每个视图作为子图,展示在同一图形中。如何实现?

 채택된 답변

MathWorks Support Team
MathWorks Support Team 2021년 9월 12일
편집: MathWorks Support Team 2021년 12월 30일

0 개 추천

首先,可以使用“subplot”创建具有三个坐标轴的图形。然后,将每个对象绘制到第一个轴上,同时确保使用函数句柄保存每个绘图对象。
接下来,使用“copyobj”,参考:
https://www.mathworks.com/help/matlab/creating_plots/copy-and-delete-graphics-objects.html#bt51tv3
将多个绘图对象复制到一个新的父对象(例如第二个轴的图形),然后对第三个轴重复此步骤。最后,使用“view”函数更改每个轴上的摄像机角度,参考:
https://www.mathworks.com/help/matlab/ref/view.html
这里给出一个完整的例子:
%% Create figure with 3 subplots
f = figure('Units','normalized','OuterPosition',[0 .5 1 .5]);
ax1 = subplot(1,3,1);
ax2 = subplot(1,3,2);
ax3 = subplot(1,3,3);
%% Plot some surfaces on 1st subplot
[X,Y,Z] = peaks;
s = surf(ax1,X,Y,Z); hold(ax1,'on');
p = surf(ax1,X,Y,zeros(size(X))); hold(ax1,'off');
plotObjs = [s,p];
%% Copy plot objects to other 2 subplots
copyobj(plotObjs,ax2);
copyobj(plotObjs,ax3);
%% Set different viewing angle for each subplot
view(ax1,0,90); title(ax1,'view(0,90)');
view(ax2,90,0); title(ax2,'view(90,0)');
view(ax3,0,0); title(ax3,'view(0,0)');

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 二维图和三维图에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!