声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 13035|回复: 23

[绘图技巧] 如何利用三维数据画三维网格图

[复制链接]
发表于 2007-12-16 20:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
数据是(x,y,z)形式的,想利用这些数据画三维网格图,看了论坛中的一些帖子,也没有解决我的问题,特来求助。(数据在附件中)

[ 本帖最后由 eight 于 2007-12-17 21:10 编辑 ]

m.txt

1.58 KB, 下载次数: 207

回复
分享到:

使用道具 举报

发表于 2007-12-16 20:57 | 显示全部楼层
绘图技巧讨论很多了,不知你的问题哪里比较特殊?
 楼主| 发表于 2007-12-17 11:18 | 显示全部楼层
总是出错,不知为何?
发表于 2007-12-17 12:03 | 显示全部楼层

回复 #3 小妮妮 的帖子

出什么样的错

把出错提示贴上来
发表于 2007-12-17 20:05 | 显示全部楼层
对于一组坐标的情形,直接用mesh肯定出错。我替楼主把错误帖出来吧:
??? Error using ==> set
View [azimuth elevation] must be a two element vector.

Error in ==> mesh at 128
      set(cax,'View',y);

Warning: Z must not be a scalar or vector, not rendering surface.
Warning: Z must not be a scalar or vector, not rendering surface.
Warning: Z must not be a scalar or vector, not rendering surface.
Warning: Z must not be a scalar or vector, not rendering surface.

原因:mesh绘制网格图的时候要求z必须是二维的矩阵,x和y是不是都可以。

这个问题的特殊特殊的地方就是给的是xyz坐标向量,并不是个平面的矩阵。本该最适合用plot3,但是它绘制的又是线图,怎么办呢?虽然以前版面没有没有讨论过完全一样的,但是三维绘图的讨论还是很多的。仔细琢磨下是可以解决的:
  1. a=load('m.txt');
  2. fill3(a(:,1),a(:,2),a(:,3),rand(1,36));%如果需要特殊填充的网格,自己再想办法
  3. hold on;
  4. plot3(a(:,1),a(:,2),a(:,3),'b*');
复制代码
上边提供一种解决的思路,不一定能完全满足楼主的需求,但是希望可以有所启发。

[ 本帖最后由 花如月 于 2007-12-17 20:14 编辑 ]
temp.PNG

评分

1

查看全部评分

 楼主| 发表于 2007-12-18 09:12 | 显示全部楼层
我也试用plot3画三维图,但是如楼上所说它画出的是线图,不是网格图,一直很困扰
发表于 2007-12-18 09:39 | 显示全部楼层

回复 #6 小妮妮 的帖子

fill3不能满足你的要求么?
 楼主| 发表于 2007-12-18 14:43 | 显示全部楼层
fill3不能满足我的要求,我想用matlab画一个和origin画三维图中color fill surface 功能一样的图形(附件),因为觉得matlab画的三维图比origin漂亮,但是真的不知道该如何解决我的问题,请高手明示!
Graph1.PNG
发表于 2007-12-18 14:59 | 显示全部楼层

回复 #8 小妮妮 的帖子

这样的图只能用mesh绘制,也就是说你的X和Y必须能构成平面网格。你给的坐标点无法满足这样的要求,除非添加坐标点
发表于 2007-12-18 15:56 | 显示全部楼层
这个问题以前讨论过,可搜索一下论坛.
提示: 用griddata即可. 
我画了一下图,你作个参考吧,网格疏密可以自己调节。

z.jpg

评分

1

查看全部评分

发表于 2007-12-18 16:05 | 显示全部楼层

回复 #10 xjzuo 的帖子

:victory: griddata果然行,跟着学习了
 楼主| 发表于 2007-12-19 09:55 | 显示全部楼层
谢谢xjzuo,问题解决了。
发表于 2010-3-18 16:41 | 显示全部楼层
怎么实现啊!我时刻初学者,有代码没有?
发表于 2010-3-18 21:18 | 显示全部楼层

回复 13楼 初学者007 的帖子

将10F的代码补齐!
a=load('m.txt'); x=a(:,1); y=a(:,2); z=a(:,3);
[xx,yy]=meshgrid(min(x):max(x), min(y):max(y));
zz = griddata(x,y,z,xx,yy);
mesh(xx,yy,zz), hold
plot3(x,y,z,'o'), hold off

评分

1

查看全部评分

发表于 2010-3-19 11:06 | 显示全部楼层
网上出现的gridfit效果要比griddata更好 可以一试
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 09:44 , Processed in 0.125499 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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