首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将底图颜色栏中的第一种颜色设置为灰色不起作用

将底图颜色栏中的第一种颜色设置为灰色不起作用
EN

Stack Overflow用户
提问于 2017-02-07 09:55:08
回答 2查看 212关注 0票数 3

我在用foll。在下面的地图中绘制颜色条的代码

代码语言:javascript
复制
        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

但是,生成的贴图的第一种颜色不是灰色。我怎么才能修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-07 11:17:12

当我运行您的cmap定义时,lcmap有256个条目长,并且仅将第0个条目设置为新颜色在颜色栏或具有很少最低值的数据集中几乎不可见。我通过(1)将新颜色设置为绿色以获得最大对比度,以及(2)将lcmap中最低的32个条目设置为新颜色来夸大它,这是可以的。在底图示例文件plotsst.py中,结果为:

通过插入此代码来替换定义im1的行

代码语言:javascript
复制
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的答案,插入的代码是

代码语言:javascript
复制
import palettable
cmap = palettable.colorbrewer.sequential.PuRd_9.mpl_colormap
lcmap = [cmap(i) for i in range(cmap.N)]
lcmap[0] = (0, .5, 0, 1.0)
cmap_green = cmap.from_list('0th entry green', lcmap, 9)

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

结果就是

就是这样!

票数 4
EN

Stack Overflow用户

发布于 2017-02-07 11:24:07

不使用cmap.N,而是使用您已有的分段数,9:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42080393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档