如何在python中绘制3D栅格化的天气雷达数据

时间:2019-01-08 18:07:23

标签: python-3.x matplotlib multidimensional-array 3d mayavi

我已经对使用不同包装盒pyart创建的NEXRAD雷达数据进行网格化,并且正在尝试创建雷达反射率数据的3-D图。数据具有x,y,z坐标:Imgur 作为参考,每个网格为250m。

我希望绘制的内容与此类似:Imgur

我浏览了matplotlib 3d绘图文档,但没有找到我认为可以解决的任何问题,因为数据不是x,y,而z是数据值。

我也看到了使用mayavi mlab创建3d点图的示例,但我希望更多地用于轮廓曲面。

我认为使用mayavi mlab outline3d可能有效,但是我不知道如何创建网格需求。这是来自文档http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html的示例:

import numpy
from mayavi.mlab import *
def test_contour3d():
    x, y, z = np.ogrid[-5:5:64j, -5:5:64j, -5:5:64j]
    scalars = x * x * 0.5 + y * y + z * z * 2.0
    obj = contour3d(scalars, contours=4, transparent=True)
    return obj

我可以通过matplotlib outlinef轻松绘制2d字段:

plt.contourf(ds.x,ds.y, ds.reflectivity[0,:,:])

并获取:Imgur

但是我想绘制每个垂直切片以获得整个体积。

我曾考虑过要沿着z的填充轮廓进行处理,其中数据介于某个阈值之间,例如:

if ds.reflectivity >= 40:
   ax.contourf(ds.x, ds.y, ds.z)
elif ds.reflectivity > 30 and ds.reflectivity < 40:
   ax.contourf(ds.x, ds.y, ds.z, color = 'orange', alpha = .7)

0 个答案:

没有答案