在matplotlib colormap中选择起始颜色

dee*_*pak 1 python matplotlib matplotlib-basemap

我有如下图所示的图.目前,该图的colorscheme使用了colormap的整个范围(mpl.cm.Paired).我想做的,并且一直无法弄清楚,是如何限制matplotlib仅使用色图的一个子集.在这种情况下,我试图让起始颜色变成深蓝色.这是我的代码的绘图部分:

Figure = plt.figure(figsize=(22,10))
Map    = Basemap(projection='robin', lon_0=0, resolution='l')
x, y   = Map(LONS, LATS)
levels = np.arange(0, 4100, 100)
fcp    = Map.contourf(x, y, data, levels, interpolation="bicubic", cmap=mpl.cm.Paired)

cb = Map.colorbar(fcp, "bottom", size="5%", pad='5%', extendrect=False)
cb.ax.tick_params(labelsize=18)
cb.solids.set_edgecolor("face")
cb.set_label("metres",fontsize=18)
cb.ax.set_aspect(0.047)

Map.drawcoastlines(linewidth=1)
Map.drawmapboundary(linewidth=1)
Map.drawmeridians([-150,-100,-50,0,50,100, 150],labels=[1,1,1,0],fontsize=18)
Map.drawparallels([-60,-30,0,30,60],labels=[1,1,1,1],fontsize=18)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ded*_*tos 8

一种方法是将函数调用mpl.cm.Paired()为规范化范围的子集(即[0-1]),然后使用它返回的颜色列表来定义新的颜色映射:

import matplotlib.colors as mcol

lvTmp = np.linspace(0.1,1.0,len(levels)-1)
cmTmp = mlp.cm.Paired(lvTmp)
newCmap = mcol.ListedColormap(cmTmp)
Run Code Online (Sandbox Code Playgroud)

你需要弄清楚它的0.1值,linspace以从内置的色彩映射中获得你想要的起始颜色.

在此输入图像描述