Matlab實(shí)現(xiàn)同步子圖視角的方法詳解
說來慚愧,在了解到這個(gè)更簡單的方法之前,為了實(shí)現(xiàn)這個(gè)功能自己寫了個(gè)工具函數(shù),沒發(fā)現(xiàn)有這么簡單的實(shí)現(xiàn)方法,不過官網(wǎng)上的實(shí)現(xiàn)方法有點(diǎn)問題,我略微做出修改,這點(diǎn)會(huì)在之后被提到,以下給出實(shí)現(xiàn)子圖同步旋轉(zhuǎn)的三個(gè)例子:
實(shí)例一:雙子圖僅同步視角
實(shí)現(xiàn)這個(gè)功能依靠的是函數(shù)linkprop
,看名字就是鏈接axes的某些屬性,這里我們只需要鏈接兩個(gè)坐標(biāo)區(qū)域的'View'
屬性即可輕易實(shí)現(xiàn)同步視角:
% demo1.m % @author: slandarer [X,Y]=meshgrid(1:0.5:10,1:20); Z=sin(X)+cos(Y); % 坐標(biāo)區(qū)域1繪圖 ax1=subplot(1,2,1); surf(X,Y,Z) colormap(gca,summer) % 坐標(biāo)區(qū)域2繪圖 ax2=subplot(1,2,2); surf(X,Y,Z) colormap(gca,winter) % 只改變視角不改變軸范圍 linkprop([ax1,ax2],{'View'});
實(shí)例二:同步視角及坐標(biāo)軸范圍
在鏈接'View'
屬性的同時(shí),再把'XLim'
、'YLim'
、'ZLim'
屬性同步起來就好(代碼顯示不全可左右滑動(dòng)):
% demo2.m % @author: slandarer [X,Y]=meshgrid(1:0.5:10,1:20); Z=sin(X)+cos(Y); % 坐標(biāo)區(qū)域1繪圖 ax1=subplot(1,2,1); surf(X,Y,Z) colormap(gca,summer) % 坐標(biāo)區(qū)域2繪圖 ax2=subplot(1,2,2); surf(X,Y,Z) colormap(gca,winter) % 只改變視角和軸范圍 linkprop([ax1,ax2],{'View','XLim','YLim','ZLim'});
實(shí)例三:更多子圖
通過sub2ind
把子圖矩陣存成一個(gè)子圖行向量,然后繼續(xù)調(diào)用linkprop
函數(shù)即可(代碼顯示不全可左右滑動(dòng)):
% demo3.m % @author: slandarer % 繪制6個(gè)圖 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官網(wǎng)上給出的方案是通過鏈接'CameraPostition'
及'CameraUpVector'
兩個(gè)屬性實(shí)現(xiàn)的但是如果本身各個(gè)軸比例不相同就會(huì)出現(xiàn)下面的情況(因此還是直接設(shè)置'View'
屬性比較直接):
以上就是Matlab實(shí)現(xiàn)同步子圖視角的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Matlab同步子圖視角的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05

C語言實(shí)現(xiàn)的統(tǒng)計(jì)php代碼行數(shù)功能源碼(支持文件夾、多目錄)