python繪制熱力圖

熱力圖

1、利用熱力圖可以看數(shù)據(jù)表里多個(gè)特征兩兩的相似度合砂。參考官方API參數(shù)及地址:

seaborn.heatmap(data, vmin=None, vmax=None,cmap=None, center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None,linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None, cbar_ax=None,square=False, xticklabels=’auto’, yticklabels=’auto’, mask=None, ax=None,**kwargs)

(1)熱力圖輸入數(shù)據(jù)參數(shù):

data:矩陣數(shù)據(jù)集,可以是numpy的數(shù)組(array),也可以是pandas的DataFrame。如果是DataFrame导而,則df的index/column信息會(huì)分別對(duì)應(yīng)到heatmap的columns和rows,即pt.index是熱力圖的行標(biāo)隔崎,pt.columns是熱力圖的列標(biāo)

(2)熱力圖矩陣塊顏色參數(shù):

vmax,vmin:分別是熱力圖的顏色取值最大和最小范圍今艺,默認(rèn)是根據(jù)data數(shù)據(jù)表里的取值確定?

cmap:從數(shù)字到色彩空間的映射,取值是matplotlib包里的colormap名稱(chēng)或顏色對(duì)象爵卒,或者表示顏色的列表虚缎;改參數(shù)默認(rèn)值:根據(jù)center參數(shù)設(shè)定?

center:數(shù)據(jù)表取值有差異時(shí),設(shè)置熱力圖的色彩中心對(duì)齊值钓株;通過(guò)設(shè)置center值实牡,可以調(diào)整生成的圖像顏色的整體深淺;設(shè)置center數(shù)據(jù)時(shí)轴合,如果有數(shù)據(jù)溢出创坞,則手動(dòng)設(shè)置的vmax、vmin會(huì)自動(dòng)改變?

robust:默認(rèn)取值False受葛;如果是False题涨,且沒(méi)設(shè)定vmin和vmax的值,熱力圖的顏色映射范圍根據(jù)具有魯棒性的分位數(shù)設(shè)定总滩,而不是用極值設(shè)定

(3)熱力圖矩陣塊注釋參數(shù):

annot(annotate的縮寫(xiě)):默認(rèn)取值False纲堵;如果是True,在熱力圖每個(gè)方格寫(xiě)入數(shù)據(jù)闰渔;如果是矩陣席函,在熱力圖每個(gè)方格寫(xiě)入該矩陣對(duì)應(yīng)位置數(shù)據(jù)?

fmt:字符串格式代碼,矩陣上標(biāo)識(shí)數(shù)字的數(shù)據(jù)格式澜建,比如保留小數(shù)點(diǎn)后幾位數(shù)字?

annot_kws:默認(rèn)取值False向挖;如果是True,設(shè)置熱力圖矩陣上數(shù)字的大小顏色字體炕舵,matplotlib包text類(lèi)下的字體設(shè)置;官方文檔:

(4)熱力圖矩陣塊之間間隔及間隔線參數(shù):

linewidths:定義熱力圖里“表示兩兩特征關(guān)系的矩陣小塊”之間的間隔大小?

linecolor:切分熱力圖上每個(gè)矩陣小塊的線的顏色跟畅,默認(rèn)值是’white’

(5)熱力圖顏色刻度條參數(shù):

cbar:是否在熱力圖側(cè)邊繪制顏色刻度條咽筋,默認(rèn)值是True?

cbar_kws:熱力圖側(cè)邊繪制顏色刻度條時(shí),相關(guān)字體設(shè)置徊件,默認(rèn)值是None?

cbar_ax:熱力圖側(cè)邊繪制顏色刻度條時(shí)奸攻,刻度條位置設(shè)置蒜危,默認(rèn)值是None

(6)square:設(shè)置熱力圖矩陣小塊形狀,默認(rèn)值是False

xticklabels, yticklabels:xticklabels控制每列標(biāo)簽名的輸出睹耐;yticklabels控制每行標(biāo)簽名的輸出辐赞。默認(rèn)值是auto。如果是True硝训,則以DataFrame的列名作為標(biāo)簽名响委。如果是False,則不添加行標(biāo)簽名窖梁。如果是列表赘风,則標(biāo)簽名改為列表中給的內(nèi)容。如果是整數(shù)K纵刘,則在圖上每隔K個(gè)標(biāo)簽進(jìn)行一次標(biāo)注邀窃。 如果是auto,則自動(dòng)選擇標(biāo)簽的標(biāo)注間距假哎,將標(biāo)簽名不重疊的部分(或全部)輸出?

mask:控制某個(gè)矩陣塊是否顯示出來(lái)瞬捕。默認(rèn)值是None。如果是布爾型的DataFrame舵抹,則將DataFrame里True的位置用白色覆蓋掉?

ax:設(shè)置作圖的坐標(biāo)軸山析,一般畫(huà)多個(gè)子圖時(shí)需要修改不同的子圖的該值?

**kwargs:All other keyword arguments are passed to ax.pcolormesh

熱力圖矩陣塊顏色參數(shù)

#cmap(顏色)

import matplotlib.pyplot as plt

import numpy as np

% matplotlib inline

f, (ax1,ax2) = plt.subplots(figsize = (6,4),nrows=2)

# cmap用cubehelix map顏色

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)

sns.heatmap(pt, linewidths = 0.05, ax = ax1, vmax=900, vmin=0, cmap=cmap)

pt = np.random.randint(low=0,high=900,size=(8,8))

ax1.set_title('cubehelix map')

ax1.set_xlabel('')

ax1.set_xticklabels([]) #設(shè)置x軸圖例為空值

ax1.set_ylabel('kind')

# cmap用matplotlib colormap

sns.heatmap(pt, linewidths = 0.05, ax = ax2, vmax=900, vmin=0, cmap='rainbow')

# rainbow為 matplotlib 的colormap名稱(chēng)

ax2.set_title('matplotlib colormap')

ax2.set_xlabel('region')

ax2.set_ylabel('kind')



#center的用法(顏色)

f, (ax1,ax2) = plt.subplots(figsize = (6, 4),nrows=2)

f, (ax1,ax2) = plt.subplots(figsize = (6,4),nrows=2)

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)

sns.heatmap(pt, linewidths = 0.05, ax = ax1, cmap=cmap, center=None )

ax1.set_title('center=None')

ax1.set_xlabel('')

ax1.set_xticklabels([]) #設(shè)置x軸圖例為空值ax1.set_ylabel('kind')# 當(dāng)center設(shè)置小于數(shù)據(jù)的均值時(shí),生成的圖片顏色要向0值代表的顏色一段偏移sns.heatmap(pt, linewidths = 0.05, ax = ax2, cmap=cmap, center=200)?

ax2.set_title('center=3000')

ax2.set_xlabel('region')

ax2.set_ylabel('kind')



#annot(矩陣上數(shù)字),annot_kws(矩陣上數(shù)字的大小顏色字體)matplotlib包text類(lèi)下的字體設(shè)置import numpy as np

np.random.seed(20180316)

x = np.random.randn(4, 4)

f, (ax1, ax2) = plt.subplots(figsize=(6,6),nrows=2)

sns.heatmap(x, annot=True, ax=ax1)

sns.heatmap(x, annot=True, ax=ax2, annot_kws={'size':9,'weight':'bold', 'color':'blue'})



#fmt(字符串格式代碼掏父,矩陣上標(biāo)識(shí)數(shù)字的數(shù)據(jù)格式笋轨,比如保留小數(shù)點(diǎn)后幾位數(shù)字)

import numpy as np

np.random.seed(0)

x = np.random.randn(4,4)

f, (ax1, ax2) = plt.subplots(figsize=(6,6),nrows=2)

sns.heatmap(x, annot=True, ax=ax1)

sns.heatmap(x, annot=True, fmt='.1f', ax=ax2)



熱力圖矩陣塊之間間隔及間隔線參數(shù)

#linewidths(矩陣小塊的間隔),linecolor(切分熱力圖矩陣小塊的線的顏色)

import matplotlib.pyplot as plt

f, ax = plt.subplots(figsize = (6,4))

cmap = sns.cubehelix_palette(start = 1, rot = 3, gamma=0.8, as_cmap = True)?

sns.heatmap(pt, cmap = cmap, linewidths = 0.05, linecolor= 'red', ax = ax)?

ax.set_title('Amounts per kind and region')

ax.set_xlabel('region')

ax.set_ylabel('kind')



#xticklabels,yticklabels橫軸和縱軸的標(biāo)簽名輸出import matplotlib.pyplot as plt

f, (ax1,ax2) = plt.subplots(figsize = (5,5),nrows=2)

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)

p1 = sns.heatmap(pt, ax=ax1, cmap=cmap, center=None, xticklabels=False)

ax1.set_title('xticklabels=None',fontsize=8)

p2 = sns.heatmap(pt, ax=ax2, cmap=cmap, center=None, xticklabels=2, yticklabels=list(range(5)))

ax2.set_title('xticklabels=2, yticklabels is a list',fontsize=8)

ax2.set_xlabel('region')



#mask對(duì)某些矩陣塊的顯示進(jìn)行覆蓋

f, (ax1,ax2) = plt.subplots(figsize = (5,5),nrows=2)

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)

p1 = sns.heatmap(pt, ax=ax1, cmap=cmap, xticklabels=False, mask=None)

ax1.set_title('mask=None')

ax1.set_ylabel('kind')

p2 = sns.heatmap(pt, ax=ax2, cmap=cmap, xticklabels=True, mask=(pt<800))?

#mask對(duì)pt進(jìn)行布爾型轉(zhuǎn)化,結(jié)果為T(mén)rue的位置用白色覆蓋

ax2.set_title('mask: boolean DataFrame')

ax2.set_xlabel('region')

ax2.set_ylabel('kind')


用mask實(shí)現(xiàn):突出顯示某些數(shù)據(jù)

f,(ax1,ax2) = plt.subplots(figsize=(4,6),nrows=2)

x = np.array([[1,2,3],[2,0,1],[-1,-2,0]])

sns.heatmap(x, annot=True, ax=ax1)

sns.heatmap(x, mask=x < 1, ax=ax2, annot=True, annot_kws={"weight": "bold"})? #把小于1的區(qū)域覆蓋掉




參考:http://www.php.cn/python-tutorials-391565.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赊淑,一起剝皮案震驚了整個(gè)濱河市爵政,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陶缺,老刑警劉巖钾挟,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異饱岸,居然都是意外死亡掺出,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)苫费,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)汤锨,“玉大人,你說(shuō)我怎么就攤上這事百框∠欣瘢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)柬泽。 經(jīng)常有香客問(wèn)我慎菲,道長(zhǎng),這世上最難降的妖魔是什么锨并? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任露该,我火速辦了婚禮,結(jié)果婚禮上第煮,老公的妹妹穿的比我還像新娘解幼。我一直安慰自己,他們只是感情好空盼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布书幕。 她就那樣靜靜地躺著,像睡著了一般揽趾。 火紅的嫁衣襯著肌膚如雪台汇。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天篱瞎,我揣著相機(jī)與錄音苟呐,去河邊找鬼。 笑死俐筋,一個(gè)胖子當(dāng)著我的面吹牛牵素,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播澄者,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼笆呆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了粱挡?” 一聲冷哼從身側(cè)響起赠幕,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎询筏,沒(méi)想到半個(gè)月后榕堰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嫌套,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年逆屡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踱讨。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡魏蔗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勇蝙,到底是詐尸還是另有隱情沫勿,我是刑警寧澤挨约,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布味混,位于F島的核電站产雹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏翁锡。R本人自食惡果不足惜蔓挖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馆衔。 院中可真熱鬧瘟判,春花似錦、人聲如沸角溃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)减细。三九已至匆瓜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間未蝌,已是汗流浹背驮吱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萧吠,地道東北人左冬。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纸型,于是被迫代替她去往敵國(guó)和親拇砰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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