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') endend% 只改变视角不改变轴范围linkprop(ax,{'View'});
注:MATHWORKS官网上给出的方案是通过链接'CameraPostition'
及'CameraUpVector'
两个属性实现的但是如果本身各个轴比例不相同就会出现下面的情况(因此还是直接设置'View'
属性比较直接):
到此,关于“Matlab如何实现同步子图视角”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341