将底图颜色条中的第一种颜色设置为灰色不起作用
Setting first color in basemap colorbar to gray not working
我正在使用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
但是,生成的地图的第一种颜色不是灰色。我该如何解决?
当我 运行 你的 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
有九个值,但将其转换为 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)
结果是
给你!
不要使用 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
我正在使用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
但是,生成的地图的第一种颜色不是灰色。我该如何解决?
当我 运行 你的 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
有九个值,但将其转换为 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)
结果是
给你!
不要使用 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