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 是让坐标轴单位长度在视觉上相等在数值上也是相等的

  • 14
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值