欢迎光临
我们一直在努力

Matlab如何实现同步子图视角

这篇文章主要介绍“Matlab如何实现同步子图视角”,在日常操作中,相信很多人在Matlab如何实现同步子图视角问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Matlab如何实现同步子图视角”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

实例一:双子图仅同步视角

实现这个功能依靠的是函数linkprop,看名字就是链接axes的某些属性,这里我们只需要链接两个坐标区域的'View'属性即可轻易实现同步视角:

% demo1.m
% @author: slandarer

[X,Y]=meshgrid(1:0.5:10,1:20);
Z=sin(X)+cos(Y);

% 坐标区域1绘图
ax1=subplot(1,2,1);
surf(X,Y,Z)
colormap(gca,summer)

% 坐标区域2绘图
ax2=subplot(1,2,2);
surf(X,Y,Z) 
colormap(gca,winter)

% 只改变视角不改变轴范围
linkprop([ax1,ax2],{'View'});

实例二:同步视角及坐标轴范围

在链接'View'属性的同时,再把'XLim''YLim''ZLim'属性同步起来就好(代码显示不全可左右滑动):

% demo2.m
% @author: slandarer

[X,Y]=meshgrid(1:0.5:10,1:20);
Z=sin(X)+cos(Y);

% 坐标区域1绘图
ax1=subplot(1,2,1);
surf(X,Y,Z)
colormap(gca,summer)

% 坐标区域2绘图
ax2=subplot(1,2,2);
surf(X,Y,Z) 
colormap(gca,winter)

% 只改变视角和轴范围
linkprop([ax1,ax2],{'View','XLim','YLim','ZLim'});

实例三:更多子图

通过sub2ind把子图矩阵存成一个子图行向量,然后继续调用linkprop函数即可(代码显示不全可左右滑动):

% demo3.m
% @author: slandarer

% 绘制6个图
M=2; 
N=3;

for m=1:M
    for n=1:N
        ax(1,sub2ind([M,N],m,n))=subplot(M,N,n+(m-1)*N);
        hold on;grid on
        scatter3(rand([5,1]),rand([5,1]),rand([5,1]),'filled')
    end
end

% 只改变视角不改变轴范围
linkprop(ax,{'View'});

注:MATHWORKS官网上给出的方案是通过链接'CameraPostition''CameraUpVector'两个属性实现的但是如果本身各个轴比例不相同就会出现下面的情况(因此还是直接设置'View'属性比较直接):

到此,关于“Matlab如何实现同步子图视角”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注云搜网网站,小编会继续努力为大家带来更多实用的文章!

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。