小妮妮 发表于 2007-12-16 20:53

如何利用三维数据画三维网格图

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

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

花如月 发表于 2007-12-16 20:57

绘图技巧讨论很多了,不知你的问题哪里比较特殊?

小妮妮 发表于 2007-12-17 11:18

总是出错,不知为何?

sigma665 发表于 2007-12-17 12:03

回复 #3 小妮妮 的帖子

出什么样的错

把出错提示贴上来

花如月 发表于 2007-12-17 20:05

对于一组坐标的情形,直接用mesh肯定出错。我替楼主把错误帖出来吧:
??? Error using ==> set
View 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,但是它绘制的又是线图,怎么办呢?虽然以前版面没有没有讨论过完全一样的,但是三维绘图的讨论还是很多的。仔细琢磨下是可以解决的:a=load('m.txt');
fill3(a(:,1),a(:,2),a(:,3),rand(1,36));%如果需要特殊填充的网格,自己再想办法
hold on;
plot3(a(:,1),a(:,2),a(:,3),'b*');上边提供一种解决的思路,不一定能完全满足楼主的需求,但是希望可以有所启发。

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

小妮妮 发表于 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漂亮,但是真的不知道该如何解决我的问题,请高手明示!

花如月 发表于 2007-12-18 14:59

回复 #8 小妮妮 的帖子

这样的图只能用mesh绘制,也就是说你的X和Y必须能构成平面网格。你给的坐标点无法满足这样的要求,除非添加坐标点

xjzuo 发表于 2007-12-18 15:56

这个问题以前讨论过,可搜索一下论坛.
提示: 用griddata即可. 
我画了一下图,你作个参考吧,网格疏密可以自己调节。

花如月 发表于 2007-12-18 16:05

回复 #10 xjzuo 的帖子

:victory: griddata果然行,跟着学习了

小妮妮 发表于 2007-12-19 09:55

谢谢xjzuo,问题解决了。

初学者007 发表于 2010-3-18 16:41

怎么实现啊!我时刻初学者,有代码没有?

ChaChing 发表于 2010-3-18 21:18

回复 13楼 初学者007 的帖子

将10F的代码补齐!
a=load('m.txt'); x=a(:,1); y=a(:,2); z=a(:,3);
=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

huaijuliu 发表于 2010-3-19 11:06

网上出现的gridfit效果要比griddata更好 可以一试
页: [1] 2
查看完整版本: 如何利用三维数据画三维网格图