日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

matplotlib 标签_Python可视化matplotlibamp;seborn14热图heatmap

發(fā)布時(shí)間:2025/3/21 python 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matplotlib 标签_Python可视化matplotlibamp;seborn14热图heatmap 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

"pythonic生物人"的第53篇分享。

熱力圖(heatmap)可通過顏色深淺變化,優(yōu)雅的展示數(shù)據(jù)的差異;本篇詳細(xì)介紹python seaborn繪制熱圖(手把手講解)。

本文您將學(xué)到什么?

1、matplotlib繪制熱圖

2、seaborn繪制熱圖?

2.0 數(shù)據(jù)集準(zhǔn)備

2.1 seaborn繪制heatmap?2.1.1 seaborn默認(rèn)參數(shù)繪制hetmap2.1.2 colorbar(圖例)范圍修改:vmin、vmax2.1.3 修改熱圖顏色盤(colormap):cmp
  • 使用matplotlib中colormap

  • 使用Seaborn顏色盤?

  • 使用palettable庫中顏色盤?

2.1.4 修改圖例中心數(shù)據(jù)值大小:center2.1.5 熱圖中文本開關(guān):annot2.1.6 格子中數(shù)據(jù)的格式化輸出:fmt2.1.7 格子中數(shù)據(jù)(字體大小、磅值、顏色)等設(shè)置:annot_kws2.1.8 格子外框?qū)挾取㈩伾O(shè)置:linewidths、linecolor2.1.9 圖例開關(guān):cbar2.1.10 圖例位置、名稱、標(biāo)簽等設(shè)置:cbar_kws2.1.11 熱圖中只顯示部分符合條件的數(shù)據(jù):mask2.1.12 自定義x軸、y軸標(biāo)簽:xticklabels、yticklabels

3、seaborn.heatmap所有參數(shù)詳解代碼

正文開始啦

1、matplotlib繪制熱圖

matplotlib可通過以下兩種方法繪制heamap;

  • matplotlib.axes.Axes.imshow
  • matplotlib.pyplot.imshow

原始效果圖,挺丑陋的;改進(jìn)后效果圖(雖然要寫很多輔助函數(shù)實(shí)現(xiàn),但是可以很好的實(shí)現(xiàn)自定義熱圖,需要高度個(gè)性化的小伙伴可以去摸索);?


2、seaborn繪制熱圖

seaborn在matplotlib的基礎(chǔ)上封裝了個(gè)seaborn.heatmap,非常傻瓜式操作,我等調(diào)包俠的福音,效果可以趕得上R語言了,不逼逼,下面上干貨:

2.0 數(shù)據(jù)集準(zhǔn)備

使用鳶尾花iris數(shù)據(jù)集,數(shù)據(jù)集詳細(xì)介紹請戳:鳶尾花iris數(shù)據(jù)集;

import?matplotlib.pyplot?as?pltimport?numpy?as?npimport?pandas?as?pdfrom?pandas?import?Series,DataFrameimport?seaborn?as?snsimport?palettable#python顏色庫from?sklearn?import?datasets?
plt.rcParams['font.sans-serif']=['SimHei']??#?用于顯示中文
plt.rcParams['axes.unicode_minus']?=?False??#?用于顯示中文
iris=datasets.load_iris()
x,?y?=?iris.data,?iris.target
pd_iris?=?pd.DataFrame(np.hstack((x,?y.reshape(150,?1))),columns=['sepal?length(cm)','sepal?width(cm)','petal?length(cm)','petal?width(cm)','class']?)
plt.figure(dpi=200,?figsize=(10,6))
data1?=?np.array(pd_iris['sepal?length(cm)']).reshape(25,6)#Series轉(zhuǎn)np.array
df?=?pd.DataFrame(data1,?
??????????????????index=[chr(i)?for?i?in?range(65,?90)],#DataFrame的行標(biāo)簽設(shè)置為大寫字母
??????????????????columns=["a","b","c","d","e","f"])#設(shè)置DataFrame的列標(biāo)簽

用來繪制熱圖的數(shù)據(jù)集是什么樣子的?其實(shí)就是取iris中的一列(150個(gè)值),轉(zhuǎn)化為一個(gè)25x6的DataFrame數(shù)據(jù)集,如下:

print(df.shape)
df.head()

2.1 seaborn繪制heatmap

語法:seaborn.heatmap

2.1.1 seaborn默認(rèn)參數(shù)繪制hetmap

plt.figure(dpi=120)
sns.heatmap(data=df,#矩陣數(shù)據(jù)集,數(shù)據(jù)的index和columns分別為heatmap的y軸方向和x軸方向標(biāo)簽???????????????
?????????)
plt.title('所有參數(shù)默認(rèn)')

2.1.2 colorbar(圖例)范圍修改:vmin、vmax

#右側(cè)colorbar范圍修改#注意colorbar范圍變化,左圖顏色隨之變化
plt.clf()
plt.figure(dpi=120)
sns.heatmap(data=df,#矩陣數(shù)據(jù)集,數(shù)據(jù)的index和columns分別為heatmap的y軸方向和x軸方向標(biāo)簽
?????????????????vmin=5,#圖例(右側(cè)顏色條color?bar)中最小顯示值?
?????????????????vmax=8,#圖例(右側(cè)顏色條color?bar)中最大顯示值
???????????)
plt.title('右側(cè)colorbar顯示范圍修改:vmin、vmax')?

2.1.3 修改熱圖顏色盤(colormap):cmp

感覺默認(rèn)顏色太丑陋,可以換個(gè)顏色盤,cmp參數(shù)控制hetmap顏色;
可以使用matplotlib顏色盤、seaborn顏色盤、palettable庫中顏色盤

使用matplotlib中colormap

了解matplotlib中所有colormap請戳:matplotlib中colormap使用詳解

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=plt.get_cmap('Set3'),#使用matplotlib中的顏色盤
???????????)
plt.title("使用matplotlib中的顏色盤:cmap=plt.get_cmap('Set3')")#?感覺顏色還是丑,那就再換個(gè)
plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=plt.get_cmap('tab20c'),#matplotlib中的顏色盤'tab20c'
???????????)
plt.title("使用matplotlib中的顏色盤:cmap=plt.get_cmap('tab20c')")#感覺太油膩,太花哨,那就來個(gè)純一點(diǎn)的(色度依次增加,請看右邊圖例顏色變化)
plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=plt.get_cmap('Greens'),#matplotlib中的顏色盤'Greens'
???????????)
plt.title("使用matplotlib中的顏色盤:cmap=plt.get_cmap('Greens')")#色度依次遞減,注意比較右邊圖例顏色變化
plt.figure(dpi=120)
sns.heatmap(data=df,?????????????????#cmap選取的顏色條,有的是由淺到深('Greens'),有的是相反的('Greens_r')
????????????cmap=plt.get_cmap('Greens_r'),#matplotlib中的顏色盤'Greens_r'
???????????)
plt.title("使用matplotlib中的顏色盤:cmap=plt.get_cmap('Greens_r')")

使用Seaborn顏色盤

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=sns.dark_palette("#2ecc71",?as_cmap=True),#seaborn 深色色盤:sns.dark_palette使用
???????????)
plt.title("使用seaborn dark顏色盤:cmap=sns.dark_palette('#2ecc71', as_cmap=True)")plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=sns.light_palette("#2ecc71",?as_cmap=True),#淡色色盤:sns.light_palette()使用
???????????)
plt.title("使用seaborn light顏色盤:sns.light_palette('#2ecc71', as_cmap=True)")plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=sns.diverging_palette(10,?220,?sep=80,?n=7),#區(qū)分度顯著色盤:sns.diverging_palette()使用
???????????)
plt.title("使用seaborn diverging顏色盤:sns.diverging_palette(10, 220, sep=80, n=7)")plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=sns.cubehelix_palette(as_cmap=True),#漸變色盤:sns.cubehelix_palette()使用
???????????)
plt.title("使用seaborn cubehelix顏色盤:sns.diverging_palette(220, 20, sep=20, as_cmap=True)")

使用palettable庫中顏色盤

關(guān)于python palettable庫使用請戳:python Palettable庫使用詳解

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,#使用palettable庫中顏色條
???????????)
plt.title("使用palettable庫顏色盤:palettable.cartocolors.diverging.ArmyRose_7.mpl_colors")plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cmocean.diverging.Curl_10.mpl_colors,#使用palettable庫中顏色條
???????????)
plt.title("使用palettable庫顏色盤:palettable.cmocean.diverging.Curl_10.mpl_colors")plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.tableau.TrafficLight_9.mpl_colors,#使用palettable庫中顏色條
???????????)
plt.title("使用palettable庫顏色盤:palettable.tableau.TrafficLight_9.mpl_colors")

2.1.4 修改圖例中心數(shù)據(jù)值大小:center

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????center=7,#color?bar的中心數(shù)據(jù)值大小,可以控制整個(gè)熱圖的顏盤深淺
???????????)
plt.title("color bar的中心數(shù)據(jù)值大小:center")

2.1.5 熱圖中文本開關(guān):annot

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????annot=True,#默認(rèn)為False,當(dāng)為True時(shí),在每個(gè)格子寫入data中數(shù)據(jù)
???????????)
plt.title("每個(gè)格子寫入data中數(shù)據(jù):annot=True")

2.1.6 格子中數(shù)據(jù)的格式化輸出:fmt

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????annot=True,#默認(rèn)為False,當(dāng)為True時(shí),在每個(gè)格子寫入data中數(shù)據(jù)
????????????fmt=".2f",#設(shè)置每個(gè)格子中數(shù)據(jù)的格式,參考之前的文章,此處保留兩位小數(shù)
???????????)
plt.title("格子中數(shù)據(jù)的格式化輸出:fmt")

2.1.7 格子中數(shù)據(jù)(字體大小、磅值、顏色)等設(shè)置:annot_kws

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????annot=True,#默認(rèn)為False,當(dāng)為True時(shí),在每個(gè)格子寫入data中數(shù)據(jù)
????????????annot_kws={'size':8,'weight':'normal',?'color':'blue'},#設(shè)置格子中數(shù)據(jù)的大小、粗細(xì)、顏色
???????????)
plt.title("格子中數(shù)據(jù)(字體大小、磅值、顏色)等設(shè)置:annot_kws")

2.1.8 格子外框?qū)挾取㈩伾O(shè)置:linewidths、linecolor

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????linewidths=1,#每個(gè)格子邊框?qū)挾?#xff0c;默認(rèn)為0
????????????linecolor='red',#每個(gè)格子邊框顏色,默認(rèn)為白色
???????????)
plt.title("格子外框?qū)挾取㈩伾O(shè)置:linewidths、linecolor")

2.1.9 圖例開關(guān):cbar

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????cbar=False,#右側(cè)圖例(color?bar)開關(guān),默認(rèn)為True顯示
???????????)
plt.title("圖例開關(guān):cbar")

2.1.10?圖例位置、名稱、標(biāo)簽等設(shè)置:cbar_kws

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????cbar=True,
????????????cbar_kws={'label':?'ColorbarName',?#color?bar的名稱'orientation':?'horizontal',#color?bar的方向設(shè)置,默認(rèn)為'vertical',可水平顯示'horizontal'"ticks":np.arange(4.5,8,0.5),#color?bar中刻度值范圍和間隔"format":"%.3f",#格式化輸出color?bar中刻度值"pad":0.15,#color?bar與熱圖之間距離,距離變大熱圖會(huì)被壓縮
???????????????????????????????????????????????????},
???????????)
plt.title("圖例位置、名稱、標(biāo)簽等設(shè)置:cbar_kws")

2.1.11 熱圖中只顯示部分符合條件的數(shù)據(jù):mask

plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????mask=df<6.0,#熱圖中顯示部分?jǐn)?shù)據(jù):顯示數(shù)值小于6的數(shù)據(jù)?
?????????)
plt.title("熱圖中只顯示部分符合條件的數(shù)據(jù):mask")

2.1.12 自定義x軸、y軸標(biāo)簽:xticklabels、yticklabels

#?linewidths、linecolor參數(shù)
plt.figure(dpi=120)
sns.heatmap(data=df,
????????????cmap=palettable.cartocolors.diverging.ArmyRose_7.mpl_colors,
????????????xticklabels=['三連啊','關(guān)注公眾號啊','pythonic生物人','收藏啊','點(diǎn)贊啊','老鐵三連三連']?,?#x軸方向刻度標(biāo)簽開關(guān)、賦值,可選“auto”,?bool,?list-like(傳入列表),?or?int,
????????????yticklabels=True,?#y軸方向刻度標(biāo)簽開關(guān)、同x軸
?????????)
plt.title("自定義x軸、y軸標(biāo)簽:xticklabels、yticklabels")#['sepal?length(cm)','sepal?width(cm)','petal?length(cm)','petal?width(cm)','class']?

3、seaborn.heatmap所有參數(shù)詳解代碼

感興趣的小火伴,可以關(guān)注我的公眾號免費(fèi)獲取源代碼:

4、參考資料

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.imshow.html#matplotlib.pyplot.imshow

http://seaborn.pydata.org/generated/seaborn.heatmap.html?highlight=heatmap#seaborn.heatmap

本篇結(jié)束,下一篇詳細(xì)介紹聚類熱圖,感興趣小伙伴歡迎跟蹤我。

同系列文章
Python可視化|matplotlib12-垂直|水平|堆積條形圖詳解Python可視化|matplotlib13-直方圖(histogram)詳解Python可視化|08-Palettable庫中顏色條Colormap(四)Python可視化|matplotlib07-自帶顏色條Colormap(三)

原創(chuàng)不易"點(diǎn)贊"、"在看"勵(lì)下唄

總結(jié)

以上是生活随笔為你收集整理的matplotlib 标签_Python可视化matplotlibamp;seborn14热图heatmap的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。