爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 15435|回复: 27

MeteoInfoLab脚本示例:3维图形

[复制链接]

新浪微博达人勋

发表于 2017-7-31 15:51:23 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
先创建一个3维坐标系: ax = axes3d(),然后用3维坐标系对象(ax)里的绘图函数绘图。绘图函数有plot, scatter, plot_surface, plot_wireframe, plot_layer, contour, contourf, imshow等。

线条图:
  1. z = linspace(0, 1, 100)
  2. x = z * np.sin(20 * z)
  3. y = z * np.cos(20 * z)

  4. #Plot
  5. ax = axes3d()
  6. ax.plot(x, y, z, '-b')
  7. title('3D plot example')


plot_3d.png

散点图:
  1. z = linspace(0, 1, 100)
  2. x = z * np.sin(20 * z)
  3. y = z * np.cos(20 * z)
  4. c = x + y

  5. #Plot
  6. ax = axes3d()
  7. points = ax.scatter(x, y, z, c=c)
  8. colorbar(points,shrink=0.8)
  9. title('Point 3D plot example')


scatter_3d.png

Wireframe和等值线图:
  1. alpha = 0.7
  2. phi_ext = 2 * pi * 0.5
  3. N = 25
  4. x1 = linspace(0, 2*pi, N)
  5. y1 = linspace(0, 2*pi, N)
  6. x,y = meshgrid(x1, y1)
  7. z = 2 + alpha - 2 * cos(y) * cos(x) - alpha * cos(phi_ext - 2 * y)
  8. z = z.T

  9. #Plot
  10. ax = axes3d()
  11. lines = ax.contour(x1, y1, z, 10, offset=-2)
  12. ax.plot_wireframe(x, y, z, color='b')
  13. colorbar(lines)
  14. title('Wireframe and contour 3D plot example')


wireframe_contour.png

Wireframe和等值线填色图:
  1. alpha = 0.7
  2. phi_ext = 2 * pi * 0.5
  3. N = 25
  4. x1 = linspace(0, 2*pi, N)
  5. y1 = linspace(0, 2*pi, N)
  6. x,y = meshgrid(x1, y1)
  7. z = 2 + alpha - 2 * cos(y) * cos(x) - alpha * cos(phi_ext - 2 * y)
  8. z = z.T

  9. #Plot
  10. ax = axes3d()
  11. lines = ax.contourf(x1, y1, z, 10, offset=-2)
  12. ax.plot_wireframe(x, y, z, color='b')
  13. colorbar(lines)
  14. title('Wireframe and contourf 3D plot example')


wireframe_contourf.png

Surface图:
  1. alpha = 0.7
  2. phi_ext = 2 * pi * 0.5
  3. x = linspace(0, 2*pi, 100)
  4. y = linspace(0, 2*pi, 100)
  5. x,y = meshgrid(x, y)
  6. z = 2 + alpha - 2 * cos(y) * cos(x) - alpha * cos(phi_ext - 2 * y)
  7. z = z.T

  8. #Plot
  9. ax = axes3d()
  10. ls = ax.plot_surface(x, y, z, 20, edge=False)
  11. colorbar(ls,shrink=0.8)
  12. title('Surface 3D plot example')


surface_1.png

图像:
  1. fn = 'D:/Temp/nc/air_clm.nc'
  2. f = addfile(fn)
  3. ps = f['aveair'][0,:,:,'120']
  4. yy = linspace(0, 1., ps.shape[0])
  5. ps.setdimvalue(0, yy)

  6. #Map layer
  7. layer = shaperead('D:/Temp/map/110m-land.shp')

  8. #Plot
  9. ax = axes3d(bbox=True)
  10. ax.plot_layer(layer, color='c', edgecolor='b')
  11. ls = ax.imshow(ps, 10, offset=120, zdir='x', alpha=0.8)
  12. colorbar(ls)
  13. zlim(0, 1)
  14. xlim(0, 180)
  15. title('3D imshow x direction example')


imshow_xdir_3d.png

轨迹图:
  1. #Open trajectory data and get trajectory layer
  2. fn = 'D:/Temp/HYSPLIT/traj_20131211_00'
  3. f = addfile_hytraj(fn)
  4. tlayer = f.trajlayer()
  5. stlayer = f.trajsplayer()

  6. #Map layer
  7. layer = shaperead('D:/Temp/map/110m-land.shp')

  8. #Relief data
  9. fn = 'D:/Temp/nc/elev.0.25-deg.nc'
  10. f = addfile(fn)
  11. elev = f['data'][0,::8,::8]
  12. elev = elev[:,'0:180']
  13. elev[elev<0] = 0

  14. #Plot
  15. ax = axes3d()
  16. ls = ax.plot_surface(elev, 20, cmap='MPL_terrain', edge=False)
  17. ax.plot_layer(layer, edgecolor='g')
  18. ax.plot_layer(tlayer)
  19. ax.plot_layer(stlayer, fill=False)
  20. zlim(0, 10000)
  21. xlim(0, 180)
  22. colorbar(ls)
  23. title('3D trajectory example')


trajectory_3d_1.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-1 17:37:49 | 显示全部楼层
好想学习哦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-8-2 13:45:17 | 显示全部楼层
rcdxph 发表于 2017-8-2 13:10
老师,实例的 数据没有啊,能否提供下载?

有些数据太大,无法在这里提供下载。你可以加入MeteoInfo QQ群,里面有。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-4 09:01:16 | 显示全部楼层
太酷了。真心不错啊。
厉害
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-14 19:14:36 | 显示全部楼层
绘制3D图需要更到新文件吗?在哪儿下载最新文件?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-14 19:22:20 | 显示全部楼层
王老师3D图能不能做雷达的呢?要是王老师能将以前那个grib格式雷达反射率演示一个3D效果图那肯定用处越来越大啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-8-14 23:00:55 | 显示全部楼层
♂雨已~○ 发表于 2017-8-14 19:22
王老师3D图能不能做雷达的呢?要是王老师能将以前那个grib格式雷达反射率演示一个3D效果图那肯定用处越来越 ...

你如果有雷达数据可以试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-14 23:25:56 | 显示全部楼层
MeteoInfo 发表于 2017-8-14 23:00
你如果有雷达数据可以试试

我有一个雷达数据,怎么传给你呢,是nc格式的雷达拼图,它里面有高度层次的雷达反射率数据,希望王老师能做一个例子…
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-8-14 23:31:01 | 显示全部楼层
♂雨已~○ 发表于 2017-8-14 23:25
我有一个雷达数据,怎么传给你呢,是nc格式的雷达拼图,它里面有高度层次的雷达反射率数据,希望王老师能 ...

你可以加入MeteoInfo QQ群: 361327727
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-14 23:33:08 | 显示全部楼层
好的…我马上加进去
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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