这是一个示例图作为说明。

python -  basemap 中的倾斜网格网络图-LMLPHP

该图显示了欧洲部分地区的卫星SO2柱数据。

由于卫星和经度的不同,符合卫星扫描原理的网格网络并不平行于经度。

我不知道是否可以在matplotlib.basemap中使用pcolor或pcolormesh绘制这种网格网络。所以,我在这里发表我的问题。

最佳答案

我偶然发现了这个问题,因为我也在寻找一种使用matplotlibbasemap在地图上绘制栅格化卫星测量结果的方法。
我不确定我的想法是否与您的问题有关,因为我的像素只能假设非常有限的离散值(4),但无论如何我还是决定回答,还想找出是否最终找到了有效的解决方案。我要做的是通过使用方法Polygon将每个单个像素直接绘制为地图上的多边形。
我将alpha值设置为基础物理测量的函数。以我为例(云图),此策略效果很好。
这是要绘制每个像素的函数:

def draw_cloud_pixel(lats, lons, index, mapplot):
    """Draw a pixel on the map. The fill color alpha level depends on the cloud index,
    ranging from 0.1 (almost fully transparent) for confidently clear pixels to 1 (fully opaque)
    for confidently cloudy pixels.

    Keyword arguments:
    lats -- Array of latitude values for the pixel 4 corner points (numpy array)
    lons -- Array of longitudes values for the pixel 4 corner points (numpy array)
    index -- Cloud mask index for given pixel:
        0: confidently_cloudy
        1: probably_cloudy
        2: probably_clear
        3: confidently_clear
    mapplot -- Map object for coordinate transformation

    Returns:
    None
    """
    x, y = mapplot(lons, lats)
    xy = zip(x,y)
    poly = Polygon(xy, facecolor='white', alpha=1-0.3*index)
    plt.gca().add_patch(poly)


然后在我的主要绘图例程中,为所选区域中的每个像素调用draw_cloud_pixel函数:

# draw plot, each pixel at the time
for scanline in xrange(select_cp_lat.shape[0]):
    for pixel in xrange(select_cp_lat.shape[1]):
        draw_cloud_pixel(select_cp_lat[scanline, pixel,:],
                         select_cp_lon[scanline, pixel,:],
                         cloud_mask[scanline, pixel],
                         mapplot)


我得到这样的情节:
python -  basemap 中的倾斜网格网络图-LMLPHP

10-07 18:23