2017-01-16 68 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); 
相关问题