将basemap colorbar中的第一种颜色设置为灰色不起作用

2024-10-02 10:30:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是foll。在下面的地图中绘制colorbar的代码

        import palettable
        cmap = palettable.colorbrewer.sequential.PuRd_9.mpl_colormap
        lcmap = [cmap(i) for i in range(cmap.N)]
        lcmap[0] = (.5, .5, .5, 1.0)  # force the first color entry to be grey
        cmap = cmap.from_list('custom cmap', lcmap, cmap.N)  # create the new map

但是,生成的贴图的第一个颜色不是灰色。我怎样才能修好它?在


Tags: the代码import地图绘制mplcmapsequential
2条回答

不要使用cmap.N使用您拥有的段数,9:

import palettable
cmap = palettable.colorbrewer.sequential.PuRd_9.mpl_colormap
lcmap = [cmap(i) for i in range(cmap.N)]
lcmap[0] = (.5, .5, .5, 1.0)  # force the first color entry to be grey
cmap = cmap.from_list('custom cmap', lcmap, 9)  # create the new map

当我运行cmap定义时,lcmap有256个条目长,并且仅将第0个条目设置为新颜色在colorbar或几乎没有最低值的数据集中几乎看不到。我通过(1)将新颜色设置为绿色以获得最大的对比度,(2)将lcmap中最低的32个条目设置为新颜色,这很好。在basemap示例文件plotsst.py中,结果是:

enter image description here

从插入此代码来替换定义im1的行:

import palettable
cmap = palettable.colorbrewer.sequential.PuRd_9.mpl_colormap
lcmap = [cmap(i) for i in range(cmap.N)]
for i in range(32):
    lcmap[i] = (0, .5, 0, 1.0)
cmap_green = cmap.from_list('0th entry green', lcmap, cmap.N)

im1 = m.pcolormesh(lons,lats,sst,shading='flat',cmap=cmap_green,latlon=True)

palettable.colorbrewer.sequential.PuRd_9如预期的那样有9个值,但将其转换为mpl_colormap可以使其平滑到256。在

结合@Pablo Reyes的回答,插入的代码是

^{pr2}$

结果是

enter image description here

给你!在

相关问题 更多 >

    热门问题