colormap

matplotlib自定義colormap

本帖主要就介紹一下matplotlib中自定義colormap的一些命令砂吞,以及制作colormap的一些方法悔常。
1) matplotlib.Colors.LinearSegmentedColormap (name,segmentdata,N=256,gamma=1.0)
colormap對(duì)象以線性分割的數(shù)據(jù)列表為基礎(chǔ)滨巴,數(shù)據(jù)列表是由原色三元組進(jìn)行線性插值產(chǎn)生优烧,為[0 1]之間的值沛豌。
其中segmentdata是一個(gè)由red,blue,green詞條構(gòu)成的詞典夭咬,每一個(gè)詞條都由 x,y0,y1三個(gè)值構(gòu)成啃炸,參數(shù)alpha為可選項(xiàng)。詞條中的三個(gè)值的含義為:x 表示在colorbar中的位置卓舵,即colorbar的長(zhǎng)度為1南用,因此 x 的值在[0 1]之間,且只能單調(diào)變化; y0,y1為表示顏色的值边器,通常為相同的值训枢,如果取值不同時(shí),對(duì)colormap的變化更有幫助忘巧。y0表示為 x 左邊的顏色值恒界,y1表示為 x 右邊的顏色值。
下面舉個(gè)例子:
cdict = {'red': [(0.0, 0.0, 0.0),
(0.5, 1.0, 1.0),
(1.0, 1.0, 1.0)],
'green': [(0.0, 0.0, 0.0),
(0.25, 0.0, 0.0),
(0.75, 1.0, 1.0),
(1.0, 1.0, 1.0)],
'blue': [(0.0, 0.0, 0.0),
(0.5, 0.0, 0.0),
(1.0, 1.0, 1.0)]}
上述詞典中 red 數(shù)據(jù)表示把colorbar中red分為兩部分砚嘴,[0 0.5]和[0.5 1]十酣,綠色分為三部分涩拙,即在[0 0.25]之間green為0,[0.25,0.75]之間
green為1,[0.75,1]之間green為1,藍(lán)色同理耸采。
gamma值用于調(diào)節(jié)colormap底部和頂部的亮度兴泥。
因?yàn)槊恳欢蔚念伾际窃趛0和y1之間進(jìn)行插值所得,因此第一行的y0和最后一行的y1是不會(huì)用到的虾宇。
2) matplotlib.colors.ListedColormap(colors,name='from_list',N=None)
3) matplotlib.cm.get_cmap(name=None,lut=None)

  1. matplotlib.cm.register_cmap(name=None,cmap=None,data=None,lut=NOne)
    以上幾個(gè)命令不再一一贅述搓彻,更詳細(xì)的信息可以點(diǎn)我

以下是一些創(chuàng)建colormap的方法:
1) 使用LinearSegmentedColormap命令

import matplotlib.colors as col
cdict = {'red': ((0.0, 0.0, 0.0),
                          (0.3, 0.5, 0.5),
                          (0.6, 0.7, 0.7),
                          (0.9, 0.8, 0.8),
                          (1.0, 0.8, 0.8)),
            'green': ((0.0, 0.0, 0.0),
                           (0.3, 0.8, 0.8),
                           (0.6, 0.7, 0.7),
                           (0.9, 0.0, 0.0),
                           (1.0, 0.7, 0.7)),
                      'blue': ((0.0, 1.0, 1.0),
                                   (0.3, 1.0, 1.0),
                                  (0.6, 0.0, 0.0),
                                  (0.9, 0.0, 0.0),
                           (1.0, 1.0, 1.0))}
cmap1 = col.LinearSegmentedColormap('my_colormap',cdict,N=256,gamma=0.75)  
# my_colormap可以自定義,如果沒有cmap1嘱朽,下面的cmap1可以換位my_colormap旭贬,但是為字符串格式
# gamma項(xiàng) 一般可以省略
    cm.register_cmap(name='own1', cmap=cmap1)   # 進(jìn)行‘注冊(cè)’,使get_cmap命令能檢索到該cmap

<span id="kM0.04844997560317399">2) 使用from_list方法
</span><div class="blockcode"><blockquote>import matplotlib.colors as col
startcolor = '#586323' 
midcolor = '#fcffc9' 
endcolor = '#bd2309' 
cmap2 = col.LinearSegmentedColormap.from_list('own2',[startcolor,midcolor,endcolor])
cm.register_cmap(cmap=cmap2)

2) 使用ListedColormap命令

import matplotlib.colors as col
cpool = [ '#bd2309', '#bbb12d', '#1480fa', '#14fa2f', '#000000',
              '#faf214', '#2edfea', '#ea2ec4', '#ea2e40', '#cdcdcd',
              '#577a4d', '#2e46c0', '#f59422', '#219774', '#8086d9' ]
cmap3 = col.ListedColormap(cpool[0:10], 'indexed')
# 注意:cpool中有15個(gè)顏色搪泳,但是只使用了10個(gè)稀轨,其余的會(huì)被忽略
# 具體可查閱matplotlib官方文檔中對(duì)ListedColormap的說明
cm.register_cmap(cmap=cmap3)
import netCDF4 as nc
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np

filepath   = '/run/media/root/*WRF/-5/s/wrfout_d02_2014-09-28_12_00_00'
data       = nc.Dataset(filepath,'r')

var        = 'REFL_10CM'
dbz        = data.variables[var][:]
dbzsize    = np.shape(data.variables[var])
timelen    = dbzsize[0]
heightlen  = dbzsize[1]
latlen     = dbzsize[2]
lonlen     = dbzsize[3]
print(dbzsize)

lats  = 30;  late  = 35;
lons  = 114; lone  = 120;
m = Basemap(projection='cyl',llcrnrlat=lats,urcrnrlat=late,llcrnrlon=lons,urcrnrlon=lone,resolution='i')
m.drawparallels(np.arange(lats,late+1,1.),labels = [1,0,0,0],fontsize=15,linewidth = 0. )
# set linewidth = 0 to turn off longitude and latitude dash line
m.drawmeridians(np.arange(lons,lone+2,2.),labels = [0,0,0,1],fontsize=15,linewidth = 0.)
m.drawcoastlines()
m.drawcountries()
#m.drawlsmask()
lon,lat  = m.makegrid(lonlen,latlen)
print(np.shape(lon))
x,y = m(lon,lat)
clevs = np.arange(0,70,10)
cdict = {'red'  : [(0.,0,1),
                   (0.15,1.,1.),
                   (0.3,0.85,0.85),
                   (0.45,0.7,0.7),
                   (0.6,0.55,0.55),
                   (0.75,0.4,0.4),
                   (0.9,0,1),
                   (1.,1.,0.)],
         'green' : [(0.,0,1),
                   (0.15,1.,1.),
                   (0.3,0.85,0.85),
                   (0.45,0.7,0.7),
                   (0.6,0.55,0.55),
                   (0.75,0.4,0.4),
                   (0.9,1.,1.),
                   (1.,1.,1.)],
         'blue'  : [(0.,0,1),
                   (0.15,1.,1.),
                   (0.3,0.85,0.85),
                   (0.45,0.7,0.7),
                   (0.6,0.55,0.55),
                   (0.75,0.4,0.4),
                   (0.9,1,1.),
                   (1.,1.,1.)]}
my_cmap = colors.LinearSegmentedColormap(name='dbzcmap',segmentdata = cdict,N=256)
#cm.register_cmap(name = 'dbzcmap',data = cdict,lut = 128)
# 如果把上述語(yǔ)句取消注釋,把LinearSegmentedColormap語(yǔ)句行注釋掉岸军,也可定義colormap
# 但是下面語(yǔ)句中的cmap=my_cmap應(yīng)改為 cmap = 'dbzcmap'
ref  = m.contourf(lon,lat,dbz[29,29,:,:],clevs,alpha = 1,cmap= my_cmap)#plt.cm.Greys)  
# alpha 表示透明度
cbar = m.colorbar(ref)
cbar.set_label('dBZ')
axes = plt.gca()
plt.grid(False)

plt.title('Reflectivity plot for WRF_ARW',size = 20)
plt.savefig('dbz')
plt.show()
image.png
image.png

python colormaps 速查

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奋刽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子艰赞,更是在濱河造成了極大的恐慌佣谐,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猖毫,死亡現(xiàn)場(chǎng)離奇詭異台谍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吁断,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門趁蕊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仔役,你說我怎么就攤上這事掷伙。” “怎么了又兵?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵任柜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我沛厨,道長(zhǎng)宙地,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任逆皮,我火速辦了婚禮宅粥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘电谣。我一直安慰自己秽梅,他們只是感情好抹蚀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著企垦,像睡著了一般环壤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钞诡,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天郑现,我揣著相機(jī)與錄音,去河邊找鬼臭增。 笑死懂酱,一個(gè)胖子當(dāng)著我的面吹牛竹习,可吹牛的內(nèi)容都是我干的誊抛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼整陌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拗窃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泌辫,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤随夸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后震放,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宾毒,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年殿遂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诈铛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墨礁,死狀恐怖幢竹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情恩静,我是刑警寧澤焕毫,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站驶乾,受9級(jí)特大地震影響邑飒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜级乐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一疙咸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唇牧,春花似錦罕扎、人聲如沸聚唐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)杆查。三九已至,卻和暖如春臀蛛,著一層夾襖步出監(jiān)牢的瞬間亲桦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工浊仆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留客峭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓抡柿,卻偏偏與公主長(zhǎng)得像舔琅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洲劣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容