Matlab画图让坐标轴单位长度相同 | 您所在的位置:网站首页 › geogebra如何调整y轴单位长度 › Matlab画图让坐标轴单位长度相同 |
让坐标轴单位长度相同
今天画开封铁塔的模拟图,代码如下: clc clear close all load A_1986 c1 = 1:8:104; c2 = 8:8:104; C = [c1;c2]'; x = A_1986(:,1);y = A_1986(:,2);z = A_1986(:,3); x_center = center_86(:,1);y_center = center_86(:,2);z_center = center_86(:,3); figure(1) H(1) = plot3(x,y,z,'bo'); for i = 1:13 line([x(C(i,1):C(i,2));x(C(i,1))],[y(C(i,1):C(i,2));y(C(i,1))],[z(C(i,1):C(i,2));z(C(i,1))]) end hold on H(2) = plot3(x_center,y_center,z_center,'r*'); H(3) = plot3(real_tajian_86(1),real_tajian_86(2),real_tajian_86(3),'r^'); title('开封铁塔1986年三维图') legend(H,{'塔每层的测量点','塔的中心点','塔尖'},'Location','NorthEast'); grid on画出来的图如下: 感觉铁塔又胖又矮。。。丑一批,发现是坐标轴单位长度不同造成的。 上网找答案,发现只要加上 axis equal 就ok,于是改之后的代码为: clc clear close all load A_1986 c1 = 1:8:104; c2 = 8:8:104; C = [c1;c2]'; x = A_1986(:,1);y = A_1986(:,2);z = A_1986(:,3); x_center = center_86(:,1);y_center = center_86(:,2);z_center = center_86(:,3); figure(1) H(1) = plot3(x,y,z,'bo'); for i = 1:13 line([x(C(i,1):C(i,2));x(C(i,1))],[y(C(i,1):C(i,2));y(C(i,1))],[z(C(i,1):C(i,2));z(C(i,1))]) end hold on H(2) = plot3(x_center,y_center,z_center,'r*'); H(3) = plot3(real_tajian_86(1),real_tajian_86(2),real_tajian_86(3),'r^'); title('开封铁塔1986年三维图') axis equal legend(H,{'塔每层的测量点','塔的中心点','塔尖'},'Location','NorthEast'); grid on画出来的图如下: 之间,还修改过一次,看到Matlab论坛有大佬说加上这段: xtick = get(gca,'XTick'); ytick = get(gca,'YTick'); ztick = get(gca,'ZTick'); %ytick间距,并将xtick间距设为与y相同 N = (max(xtick) - min(xtick))/(ztick(2)-ztick(1)); N_ = (max(ytick) - min(ytick)) / (ztick(2) - ztick(1)); xtick = xtick(1) + (0:(N - 1))*(ztick(2)-ztick(1)); ytick = ytick(1) + (0:(N_ - 1)) * (ztick(2) - ztick(1)); set(gca,'XTick',xtick');%此时横轴和纵轴坐标刻度一致 set(gca,'YTick',ytick');但是这段的效果是: 分析原因: 这段代码是让坐标轴单位长度在数值上相等但是视觉上却不是相等 axis equal 是让坐标轴单位长度在视觉上相等在数值上也是相等的 |
CopyRight 2018-2019 实验室设备网 版权所有 |