2017-01-16 103 views
0

我有一個由許多三維線組成的MATLAB三維圖(由line([...],[...],[...],...))。如果我用鼠標和旋轉工具(圖形窗口中的可點擊圖標)旋轉繪圖,MATLAB會一直重新調整座標軸。我知道可以通過使用axis([...])手動調整軸限制,但我不知道3d線或表面對象的最小/最大值。得到3d圖的最小/最大值

您可以通過輸入surf(peaks)來爲自己測試。該軸在0-50和0-60之間不斷變化。我正在使用R2011a。

對於如何獲得組合3d-lines/3d-surface-mesh的3d-min/max值,以便能夠手動設置axislimits,您有任何建議嗎?

感謝

+0

您是否嘗試過'軸equal'? '軸vis3d'? –

+0

'axis equal'對我不起作用(但是對於'surf(peaks)'),但'axis vis3d'確實可以工作。有趣。如果您將此作爲答案發布,我可以接受。 – Lemonbonbon

回答

2

我想你沒有發現命令axis呢。從the documentation

軸vis3d

凍結縱橫比特性。將繪圖箱縱橫比模式和數據縱橫比模式屬性設置爲手動。

實施例:

> surf(peaks); 
> axis vis3d 

...沒有更多的隨機軸縮放變化。

如果你真的需要提取數據(少數情況下)的最小值/最大值,您可以使用大意如下的東西:

plots = get(gca, 'children'); 
zdata = get(plots, 'zdata'); 
if isscalar(plots) 
    zdata = {zdata}; end 

maxZ = cellfun(@(x)max(x(:)), zdata); 
minZ = cellfun(@(x)min(x(:)), zdata);