2017-02-07 1 views
3

私は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 

ただし、結果のマップの最初の色はグレーではありません。どうすれば修正できますか?

答えて

4

cmap定義を実行すると、lcmapの長さは256エントリになり、0番目のエントリだけを新しい色に設定することは、カラーバーや最小値の少ないデータセットではほとんど見えません。私は、(1)新しい色を緑に設定してコントラストを最大にし、(2)lcmapの32個の最低値を新しい色に設定して、誇張しました。ベースマップの例ファイル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の答えを組み込んで、挿入されたコードは

です
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) 

と結果があり、あなたが行く

enter image description here

です!

+0

感謝@cphlewis! – user308827

3

の代わりにあなたが持っているセグメントの数を使用し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 
関連する問題