MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 116|回复: 2|关注: 0

[已解决] 用surf画二维图后叠加风场,部分线条不显示怎么办?

[复制链接]

新手

7 麦片

财富积分


050


2

主题

3

帖子

0

最佳答案
如题,用surf画二维图后,再叠加风场,添加text文字,有填色的部分线条不显示,但是我是先画的surf,后画的其他的,要怎么解决呢,可以让箭头和文字不被覆盖?谢谢!
1.jpg

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

入门

427 麦片

财富积分


50500


67

主题

1282

帖子

82

最佳答案
  • 关注者: 45
发表于 4 天前 | 显示全部楼层 |此回复为最佳答案
本帖最后由 meatball1982 于 2017-12-7 09:13 编辑

surf是3D的画图,你view(0,90)?
只是说你是从上向下看,但值的高度,还是没有变。所以在3D的画图中,text 的z 值是0.一部分小于surf对应 点的z值的text就被挡住了。

思路1。找到你的surf 的z的最大值,把text的z用这个最大值 代替,text总是在surf上。
思路2。画surf时,把surf的z设置为0。用surf原来的z来设置color.

都可以解决你的问题,
上面只是说text的。另外一个风场,同理。

file_surf_cov.png
  1. clear all
  2. clc
  3. clf

  4. the = linspace(0,pi/1.5,50);
  5. r   = linspace(0,10,30);

  6. [R,The]=meshgrid(r,the);

  7. X=R.*cos(The);
  8. Y=R.*sin(The);
  9. Z=cos(R).*sin(The*4);
  10. Z(Z<-0.3)=nan;

  11. max_Z=max(Z(:));

  12. txt_x=rand(20,1)*15-7;
  13. txt_y=rand(20,1)*10;


  14. h=figure(1);
  15. set(h,'position',[100,100,1000,800]);
  16. subplot(2,2,1)
  17. hold on
  18. surf(X,Y,Z,'edgecolor','none')
  19. view(0,90)

  20. for i = 1:20
  21.    text(txt_x(i),txt_y(i),mat2str(ceil(txt_x(i)*100)/100),...
  22.         'fontsize',12)
  23. end
  24. title('your way')

  25. subplot(2,2,2)
  26. hold on
  27. surf(X,Y,Z,'edgecolor','none')
  28. view(0,90)

  29. for i = 1:20
  30.    text(txt_x(i),txt_y(i),max_Z,mat2str(ceil(txt_x(i)*100)/100),...
  31.         'fontsize',12)
  32. end
  33. title('1st')

  34. subplot(2,2,3)
  35. hold on
  36. surf(X,Y,zeros(size(X)),Z,'edgecolor','none')
  37. view(0,90)

  38. for i = 1:20
  39.    text(txt_x(i),txt_y(i),mat2str(ceil(txt_x(i)*100)/100),...
  40.         'fontsize',12)
  41. end
  42. title('2nd')
复制代码


新手

7 麦片

财富积分


050


2

主题

3

帖子

0

最佳答案
 楼主| 发表于 4 天前 | 显示全部楼层
meatball1982 发表于 2017-12-7 09:12
surf是3D的画图,你view(0,90)?
只是说你是从上向下看,但值的高度,还是没有变。所以在3D的画图中,text  ...

非常感谢!这个问题困扰我很久了,谢谢~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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