MATLAB绘图问题:绘图出轴上的旋转边界

2次浏览(过去30天)
布莱恩
布莱恩 2016年7月8日
编辑: 布莱恩2016年7月8日
你好,谢谢你看这个,我在MATLAB中有一个问题:基本上,这个图超出了父轴的边界。
我附上了两张图片:一个是GUIDE应用程序,另一个是它部署的。在这两种情况下,坐标轴的位置都不会改变,但是,每当我在包含的坐标轴中制作一个图形时,我都会得到这个图形的大小调整。
下面是我用来在坐标轴上绘制各种数据的代码:
% %边界框
%包围框将包含一个几何域的补丁壳,和3
当前curSlice的% plot3行来帮助定位。
为数据设置一个包围框
boxDim =...
[0 0 0;Max (axhorz) 0 0;0 max(axvert) 0;Max (axhorz) Max (axvert) 0;0 0 max(saghorz);马克斯(axhorz)马克斯(saghorz);0 max(axvert) max(saghorz);Max (axhorz) Max (axvert) Max (saghorz)];
faceMx = [1 2 4 3;5 6 8 7;1 2 6 5;1 3 7 5;2 4 8 6;3 4 8 7];
集(handles.unified_ui,“CurrentAxes”handles.trac_3dAxes)
补丁(“顶点”boxDim,“脸”faceMx,“FaceColor”‘g’“FaceAlpha”, 0.05,“EdgeColor”“b”);
现在,设置当前切片线
axial_line = [curSlice(1) curSlice(2) 0;...
curSlice(1) curSlice(2) max(saghorz)];
[curSlice(1) 0 curSlice(3);...
curSlice(1) max(axvert) curSlice(3)];
corona = [0 curSlice(2) curSlice(3);...
max(axhorz) curSlice(2) curSlice(3)];
绘制当前切片线
handles.plots.trac_3dSliceBounds。Axial_line = plot3([Axial_line (1,1)) Axial_line (2,1)],...
[axial_line(1、2)axial_line (2, 2)),...
[axial_line(1、3)axial_line(2、3),“r——”);
handles.plots.trac_3dSliceBounds。射手线= plot3([射手线(1,1)]射手线(2,1)],...
[sagittal_line(1、2)sagittal_line (2, 2)),...
[sagittal_line(1、3)sagittal_line(2、3),“r——”);
handles.plots.trac_3dSliceBounds。Coronal_line = plot3([Coronal_line (1,1)) Coronal_line (2,1)],...
[coronal_line(1、2)coronal_line (2, 2)),...
[coronal_line(1、3)coronal_line(2、3),“r——”);
最后,创建指定x,y,z坐标系统的箭头
Air_width = 3;
: arrow3 (boxDim (1), boxDim (2:)“e”, ar_width, ar_width);
: arrow3 (boxDim (1), boxDim (3:)“e”, ar_width, ar_width);
: arrow3 (boxDim (1), boxDim (5:)“e”, ar_width, ar_width);
文本(意思是(boxDim(1:2, 1)),意味着(boxDim(1:2, 2)),意味着(boxDim (1:2, 3)),“X”“颜色”' w ');
文本(意思是([boxDim (1, 1) boxDim(3,1)]),意味着([boxDim(1、2)boxDim(2)]),意味着([boxDim(1、3)boxDim (3,3)]),“Y”“颜色”' w ');
文本(意思是([boxDim (1, 1) boxDim(1)]),意味着([boxDim(1、2)boxDim(2)]),意味着([boxDim(1、3)boxDim (5,3)]),“Z”“颜色”' w ');
%轴大小调整,相等和视图设置
x_Range = range(boxDim(:,1));y_Range = range(boxDim(:,2));z_Range = range(boxDim(:,3));
Range_fac = 3;
new_xmin = min(boxDim(:,1)) - x_Range/range_fac;new_xmax = max(boxDim(:,1)) + x_Range/range_fac;
new_ymin = min(boxDim(:,2)) - y_Range/range_fac;new_ymax = max(boxDim(:,2)) + y_Range/range_fac;
new_zmin = min(boxDim(:,3)) - z_Range/range_fac;new_zmax = max(boxDim(:,3)) + z_Range/range_fac;
轴(handles.trac_3dAxes[new_xmin new_xmax new_ymin new_ymax new_zmin new_zmax]);
轴(handles.trac_3dAxes“平等”);
你知道我为什么会遇到这个问题吗?谢谢!
编辑:我想我知道问题出在哪里,但我会继续讨论,因为我不知道这是如何(或为什么)发生的。
由于某种原因,当我在坐标轴的几何边界外绘图时,外层位置属性发生了变化。使用命令:
集(handles.trac_3dAxes,“OuterPosition”得到(handles.trac_3dAxes“位置”))
我可以适当地调整它的大小,使它适合我为它准备的原始空间。
使用命令
集(handles.trac_3dAxes,“ActivePositionProperty”“位置”);
没有效果。

答案(0)

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!