Python Matplotlib-使用Basemap为NaN着色

Python Matplotlib-使用Basemap为NaN着色,python,matplotlib,nan,matplotlib-basemap,colormap,Python,Matplotlib,Nan,Matplotlib Basemap,Colormap,我有一张1979-2014年2月南极洲周围海冰平均浓度的地图,我在地图上设置了从陆地到南极洲的值(它们最初是-1e30,因为很明显,陆地上没有海冰值)。由于分辨率的原因,沿海的一些南部区块延伸到了海洋的部分地区,奇怪的是,它们并没有被保留为白色,而是被填充,就好像它们的值是色条允许的最大负值一样。当我在没有底图的情况下绘制数据时,数据是颠倒的,但是NaN没有填充 你知道为什么底图的情节是填补南的,而不是让他们不着色 有没有一种方法可以用自定义颜色填充NaN?我想用和大陆填充一样的浅灰色填充它们

我有一张1979-2014年2月南极洲周围海冰平均浓度的地图,我在地图上设置了从陆地到南极洲的值(它们最初是-1e30,因为很明显,陆地上没有海冰值)。由于分辨率的原因,沿海的一些南部区块延伸到了海洋的部分地区,奇怪的是,它们并没有被保留为白色,而是被填充,就好像它们的值是色条允许的最大负值一样。当我在没有底图的情况下绘制数据时,数据是颠倒的,但是NaN没有填充

  • 你知道为什么底图的情节是填补南的,而不是让他们不着色
  • 有没有一种方法可以用自定义颜色填充NaN?我想用和大陆填充一样的浅灰色填充它们
  • 导入包 导入和提取数据 输出:

    (428, 180, 360)
    
    -- nan
    
    (180, 360)
    
    为nan值创建掩码 计算二月平均数 输出:

    (428, 180, 360)
    
    -- nan
    
    (180, 360)
    
    不带底图的绘图

    用底图绘图


    PS:我知道NaN填充在这里似乎很挑剔,但它更明显&在我绘制北极地图时有点分散注意力。

    尝试使用不同的地图投影(简单投影)。我认为投影过程包括计算一个单元,同时考虑周围的单元值。尝试简单的地图投影并查看结果。对于极坐标图,我不知道有哪种简单的投影可以生成成比例的、漂亮的图。1)非极坐标投影对我要展示的东西不好。2) 我试过墨卡托,但问题是一样的。我会尝试使用numpys掩蔽阵列,而不是使用NAN掩蔽陆地,
    (180, 360)
    
    plt.contourf(febice_mean)
    plt.colorbar()
    
    fig = plt.figure(figsize=(12,14))
    m = Basemap(projection='spstere',lon_0=270,boundinglat=-55.,resolution='l') #create basemap & specify res
    m.drawcoastlines(color='grey')
    m.fillcontinents(color='0.8')
    m.drawcountries()
    meshlon,meshlat = np.meshgrid(lon,lat) 
    x, y = m(meshlon,meshlat)                                                 #assign 2D arrays to new variables
    sic = m.pcolormesh(x,y,febice_mean,cmap=plt.cm.Blues_r,vmin=0.,vmax=1)
    cbar=m.colorbar(sic,size="3%",)
    cbar.set_label('Sea ice fractional coverage')
    plt.title('Antarctic Sea Ice Cover (1979-2014 February Mean)',fontsize=16)
    plt.show()