我已经对使用不同包装盒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)