MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 241|回复: 11|关注: 0

[已解决] 绘制三维立方图,却是以网格形式展示,如何换成平面展示

[复制链接]

新手

7 麦片

财富积分


050


1

主题

8

帖子

0

最佳答案
本人有某区域三维温度图,想绘制温度三维立方图,数据和代码如下:
20.97
21.65
23.53
20
21.41
21.96
18.66
19.27
20.82
21.4416
22.0388
23.4932
20.5624
21.7756
22.1912
19.2512
19.6284
20.8432
21.8624
22.3852
23.4588
21.0676
22.1024
22.3988
19.7808
19.9556
20.8688
22.2324
22.6892
23.4268
21.5156
22.3904
22.5828
20.2488
20.2516
20.8968
22.5516
22.9508
23.3972
21.9064
22.6396
22.7432
20.6552
20.5164
20.9272
22.82
23.17
23.37
22.24
22.85
22.88
21
20.75
20.96
23.0376
23.3468
23.3452
22.5164
23.0216
22.9932
21.2832
20.9524
20.9952
23.2044
23.4812
23.3228
22.7356
23.1544
23.0828
21.5048
21.1236
21.0328
23.3204
23.5732
23.3028
22.8976
23.2484
23.1488
21.6648
21.2636
21.0728
23.3856
23.6228
23.2852
23.0024
23.3036
23.1912
21.7632
21.3724
21.1152
23.4
23.63
23.27
23.05
23.32
23.21
21.8
21.45
21.16
23.3636
23.5948
23.2572
23.0404
23.2976
23.2052
21.7752
21.4964
21.2072
23.2764
23.5172
23.2468
22.9736
23.2364
23.1768
21.6888
21.5116
21.2568
23.1384
23.3972
23.2388
22.8496
23.1364
23.1248
21.5408
21.4956
21.3088
22.9496
23.2348
23.2332
22.6684
22.9976
23.0492
21.3312
21.4484
21.3632
22.71
23.03
23.23
22.43
22.82
22.95
21.06
21.37
21.42
22.4196
22.7828
23.2292
22.1344
22.6036
22.8272
20.7272
21.2604
21.4792
22.0784
22.4932
23.2308
21.7816
22.3484
22.6808
20.3328
21.1196
21.5408
21.6864
22.1612
23.2348
21.3716
22.0544
22.5108
19.8768
20.9476
21.6048
21.2436
21.7868
23.2412
20.9044
21.7216
22.3172
19.3592
20.7444
21.6712
20.75
21.37
23.25
20.38
21.35
22.1
18.78
20.51
21.74
数据为温度数据,对应着不同的三维坐标
clc
clear all
close all

%% 三维空间图
data=xlsread('FourTest.xlsx','Sheet3');%data为上面的数据
a1=data(:,1:3)';
a2=data(:,4:6)';
a3=data(:,7:9)';
v=cat(3,a1,a2,a3);
x=(0:2.5:50)';
y=[2.5 4 6.5]';
z=[1.5 1 0.5]';
[X,Y,Z] = meshgrid(x,y,z);
xs = 0:2.5:50;%x轴
ys = 2.5:0.5:6.5;%y轴
zs = 1.5:0.5:0.5;%z轴
h = slice(X,Y,Z,v,xs,ys,zs);
axis equal                     %三维图等比例显示
set(h,'FaceColor','interp','EdgeColor','none','DiffuseStrength',.8)
camproj perspective
box on
scrsz = get(0,'ScreenSize');    %获取屏幕尺寸
set(gcf,'Position',scrsz);      %全屏显示图片
view(-105,5);
axis on
colorbar

绘图结果如下:

俯视图是由若干网格组成的,怎么样才能使俯视图和水平面图一样,是一整个平面呢?
水平面.jpg
俯视图.jpg

新手

49 麦片

财富积分


050


4

主题

95

帖子

8

最佳答案
  • 关注者: 1
发表于 2017-1-9 17:48:26 | 显示全部楼层
用view,俯视应该是view(2);记不太清了。

新手

7 麦片

财富积分


050


1

主题

8

帖子

0

最佳答案
 楼主| 发表于 2017-1-9 18:15:14 | 显示全部楼层
悟得 发表于 2017-1-9 17:48
用view,俯视应该是view(2);记不太清了。

view是从哪个角度去看,我的意思是,第二个俯视图上面是网格状的,怎么样修改代码,使网格状的变成平面,如第一张图侧面那样

MATLAB 基础讨论
板块优秀回答者

中级

510 麦片

财富积分


5001500


12

主题

996

帖子

100

最佳答案
  • 关注者: 30
发表于 2017-1-9 18:26:05 | 显示全部楼层 |此回复为最佳答案
slice的切片是可以控制的,你可以只切最外面的一片。slice(X,Y,Z,v,xs,ys,zs),比如把这个里面的zs设置为z的最大值,应该就是切最外面的一层。如果zs是一个数组,就是切数组个数的刀数。

我现在没matlab,大概是这个意思。不难,可以试下

新手

7 麦片

财富积分


050


1

主题

8

帖子

0

最佳答案
 楼主| 发表于 2017-1-9 18:41:21 | 显示全部楼层
18666719439 发表于 2017-1-9 18:26
slice的切片是可以控制的,你可以只切最外面的一片。slice(X,Y,Z,v,xs,ys,zs),比如把这个里面的zs设置为z ...

谢谢你的回答,zs换成z的最大值之后,俯视图确实成了一个平面,但是仰视图还是网格状的,这个问题可以解决吗?C:\Users\Administrator\Desktop\仰视图.jpg
俯视图.jpg
仰视图.jpg

MATLAB 基础讨论
板块优秀回答者

中级

510 麦片

财富积分


5001500


12

主题

996

帖子

100

最佳答案
  • 关注者: 30
发表于 2017-1-9 18:42:42 | 显示全部楼层
leiwuyulunbi 发表于 2017-1-9 18:41
谢谢你的回答,zs换成z的最大值之后,俯视图确实成了一个平面,但是仰视图还是网格状的,这个问题可以解决 ...

把 x方向和y方向的切片值设置为[]即可。

MATLAB 基础讨论
板块优秀回答者

中级

510 麦片

财富积分


5001500


12

主题

996

帖子

100

最佳答案
  • 关注者: 30
发表于 2017-1-9 18:43:50 | 显示全部楼层
18666719439 发表于 2017-1-9 18:42
把 x方向和y方向的切片值设置为[]即可。

slice(x,y,z,v,[],[],[zmax]);

新手

7 麦片

财富积分


050


1

主题

8

帖子

0

最佳答案
 楼主| 发表于 2017-1-9 18:56:21 | 显示全部楼层
18666719439 发表于 2017-1-9 18:43
slice(x,y,z,v,[],[],[zmax]);

按照你的代码修改了一下,最后的结果是z=1.5的一个平面,我修改了zs=0.5:1.5;其他的xs=0:2.5:50;ys= 2.5:0.5:6.5;没有变,h = slice(X,Y,Z,v,xs,ys,zs);也没有变,最后得到的图是六个面都是平面了,不过还是谢谢你刚才的回答!:lol

MATLAB 基础讨论
板块优秀回答者

中级

510 麦片

财富积分


5001500


12

主题

996

帖子

100

最佳答案
  • 关注者: 30
发表于 2017-1-9 18:58:36 | 显示全部楼层
leiwuyulunbi 发表于 2017-1-9 18:56
按照你的代码修改了一下,最后的结果是z=1.5的一个平面,我修改了zs=0.5:1.5;其他的xs=0:2.5:50;ys= 2.5 ...

这个问题很好理解啊。你整个slice就是一块豆腐。你从长宽高各方向都可以切。切的刀数和位置就是那个xs ys zs。如果这样都实现不了你说的,那你得考虑换其他办法。

新手

7 麦片

财富积分


050


1

主题

8

帖子

0

最佳答案
 楼主| 发表于 2017-1-9 19:05:54 | 显示全部楼层
18666719439 发表于 2017-1-9 18:58
这个问题很好理解啊。你整个slice就是一块豆腐。你从长宽高各方向都可以切。切的刀数和位置就是那个xs ys ...

明白了你的意思,按照你的说法,代码改成xs=0:50;ys=2.5:6.5;zs=0.5:1.5;就能切出一个完成的立方体
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

联系我们|版权保护|小黑屋|Archiver|手机版|MATLAB中文论坛 ( 苏ICP备08100737号

GMT+8, 2017-1-23 16:34 , Processed in 0.254356 second(s), 99 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表