Matlab實現(xiàn)同步子圖視角的方法詳解
說來慚愧,在了解到這個更簡單的方法之前,為了實現(xiàn)這個功能自己寫了個工具函數(shù),沒發(fā)現(xiàn)有這么簡單的實現(xiàn)方法,不過官網(wǎng)上的實現(xiàn)方法有點問題,我略微做出修改,這點會在之后被提到,以下給出實現(xiàn)子圖同步旋轉的三個例子:
實例一:雙子圖僅同步視角
實現(xiàn)這個功能依靠的是函數(shù)linkprop,看名字就是鏈接axes的某些屬性,這里我們只需要鏈接兩個坐標區(qū)域的'View'屬性即可輕易實現(xiàn)同步視角:
% demo1.m
% @author: slandarer
[X,Y]=meshgrid(1:0.5:10,1:20);
Z=sin(X)+cos(Y);
% 坐標區(qū)域1繪圖
ax1=subplot(1,2,1);
surf(X,Y,Z)
colormap(gca,summer)
% 坐標區(qū)域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);
% 坐標區(qū)域1繪圖
ax1=subplot(1,2,1);
surf(X,Y,Z)
colormap(gca,summer)
% 坐標區(qū)域2繪圖
ax2=subplot(1,2,2);
surf(X,Y,Z)
colormap(gca,winter)
% 只改變視角和軸范圍
linkprop([ax1,ax2],{'View','XLim','YLim','ZLim'});
實例三:更多子圖
通過sub2ind把子圖矩陣存成一個子圖行向量,然后繼續(xù)調用linkprop函數(shù)即可(代碼顯示不全可左右滑動):
% 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官網(wǎng)上給出的方案是通過鏈接'CameraPostition'及'CameraUpVector'兩個屬性實現(xiàn)的但是如果本身各個軸比例不相同就會出現(xiàn)下面的情況(因此還是直接設置'View'屬性比較直接):

以上就是Matlab實現(xiàn)同步子圖視角的方法詳解的詳細內容,更多關于Matlab同步子圖視角的資料請關注腳本之家其它相關文章!
相關文章
C/C++使用socket實現(xiàn)判斷ip是否能連通
這篇文章主要為大家詳細介紹了C/C++如何使用socket實現(xiàn)判斷ip是否能連通,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下2023-07-07
詳解C++中的函數(shù)調用和下標以及成員訪問運算符的重載
這篇文章主要介紹了詳解C++中的函數(shù)調用和下標以及成員訪問運算符,講到了這些二元運算符使用的語法及重載,需要的朋友可以參考下2016-01-01

