使用pcolormesh绘制轨道数据

时间:2012-09-07 11:24:16

标签: python raw-data satellite-image matplotlib-basemap

我正在尝试映射具有相关纬度和经度的数据集。我正在使用的数据的详细信息如下:

Variable   Type       Data/Info
-------------------------------
lat    ndarray    1826x960, type `float64`
lon    ndarray    1826x960, type `float64`
data   ndarray    1826x960, type `float64`

我创建了一个底图:

m = Basemap(projection='cyl', llcrnrlon=-180, urcrnrlon=180, llcrnrlat=-40, urcrnrlat=40, resolution='c')

现在,在创建的底图上,我将使用pcolormesh绘制上述数据集:

m.drawcoastlines()
m.drawcountries
x,y = m(lon,lat)
m.pcolormesh(x,y,data)
m.colorbar()
plt.show()

这给出了下图: Temp Brightness plot

但是如果我在数据集上执行类似的绘图(大小为2691x960,同样适用于lon和lat),覆盖整个londitude拉伸(-180到180),我得到一个'奇怪的酒吧': strange bar

我很确定奇怪的条形是由于数据集的重叠而发生的。在matlab中执行了相同的绘图,它的工作非常精细。

请告诉我问题是什么,删除栏可以做些什么,在python中绘制这种数据的其他方法是什么。

2 个答案:

答案 0 :(得分:1)

我认为你遇到了一个我前一段时间遇到过的问题。这里的问题是,当底图尝试创建多边形时,它使用的插值方法似乎不能正确处理本初子午线。实际穿过素数maridian的像素被插入到遍布全球的多边形中。

我使用的解决方案是将文件分成两个蒙版数组(或者只是在不同时间以两种不同方式掩盖原始数组),一个掩盖东半球,另一个掩盖西半球,然后映射它们都是相同的轴对象。

编辑:另一个解决方案可能是让你的经度范围从-179.99到179.99或类似的东西。

答案 1 :(得分:0)

我没有使用任何东西给我这个问题,但看起来使用here方法提供mpl_toolkit.basemap.addcyclic类似的声音问题的解决方案。

来自文档:

arrout, lonsout = addcyclic(arrin, lonsin)将经度的循环(环绕)点添加到arrinlonsin,假设经度是arrin的最右侧维度。