我在用foll。在下面的地图中绘制颜色条的代码
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但是,生成的贴图的第一种颜色不是灰色。我怎么才能修复它?
发布于 2017-02-07 11:17:12
当我运行您的cmap定义时,lcmap有256个条目长,并且仅将第0个条目设置为新颜色在颜色栏或具有很少最低值的数据集中几乎不可见。我通过(1)将新颜色设置为绿色以获得最大对比度,以及(2)将lcmap中最低的32个条目设置为新颜色来夸大它,这是可以的。在底图示例文件plotsst.py中,结果为:

通过插入此代码来替换定义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的答案,插入的代码是
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)结果就是

就是这样!
发布于 2017-02-07 11:24:07
不使用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 maphttps://stackoverflow.com/questions/42080393
复制相似问题