python中使用matplotlib繪制熱力圖
熱力圖,是一種通過(guò)對(duì)色塊著色來(lái)顯示數(shù)據(jù)的統(tǒng)計(jì)圖表。
它通過(guò)使用顏色編碼來(lái)表示數(shù)據(jù)的值,并在二維平面上呈現(xiàn)出來(lái)。
熱力圖通常用于顯示大量數(shù)據(jù)點(diǎn)的密度、熱點(diǎn)區(qū)域和趨勢(shì)。
繪圖時(shí),一般較大的值由較深的顏色表示,較小的值由較淺的顏色表示;較大的值由偏暖的顏色表示,較小的值由較冷的顏色表示,等等。
熱力圖適合用于查看總體的情況、發(fā)現(xiàn)異常值、顯示多個(gè)變量之間的差異,以及檢測(cè)它們之間是否存在任何相關(guān)性。
1. 主要元素
熱力圖的主要元素如下:
- 矩形塊:每個(gè)矩形塊都有一個(gè)對(duì)應(yīng)的位置。表示某種屬性、頻率、密度等。
- 顏色映射:通常使用漸變色帶來(lái)表示數(shù)值的大小或密度。常見(jiàn)的顏色映射包括從冷色調(diào)(如藍(lán)色)到熱色調(diào)(如紅色)的漸變,表示數(shù)值從低到高的變化。
- 熱力密度:通過(guò)顏色的深淺來(lái)表示數(shù)據(jù)的密度或頻率。較淺的顏色表示較低的密度或頻率,而較深的顏色表示較高的密度或頻率。
- 坐標(biāo)軸:熱力圖通常在二維平面上顯示,因此會(huì)有兩個(gè)坐標(biāo)軸,分別表示水平和垂直方向上的位置。

2. 適用的場(chǎng)景
熱力圖適用于以下分析場(chǎng)景:
- 數(shù)據(jù)密度分析:顯示數(shù)據(jù)點(diǎn)的密度分布情況。它可以幫助用戶(hù)觀(guān)察數(shù)據(jù)的聚集區(qū)域和稀疏區(qū)域,從而揭示數(shù)據(jù)的分布模式和趨勢(shì)。
- 熱點(diǎn)區(qū)域識(shí)別:識(shí)別數(shù)據(jù)中的熱點(diǎn)區(qū)域,即數(shù)據(jù)密度較高的區(qū)域。對(duì)于發(fā)現(xiàn)熱門(mén)地區(qū)、熱門(mén)產(chǎn)品或熱門(mén)事件等具有重要意義。
- 趨勢(shì)分析:通過(guò)觀(guān)察顏色的變化,可以分析數(shù)據(jù)在不同區(qū)域或時(shí)間段的變化趨勢(shì)。
- 空間數(shù)據(jù)分析:在地理信息系統(tǒng)(GIS)和位置數(shù)據(jù)分析中,可以顯示地理空間上的數(shù)據(jù)分布和密度,幫助用戶(hù)理解地理區(qū)域的特征和差異。
- 網(wǎng)站流量分析:顯示用戶(hù)在網(wǎng)頁(yè)上的點(diǎn)擊熱度和瀏覽熱度。這有助于優(yōu)化網(wǎng)站布局、改進(jìn)用戶(hù)體驗(yàn)和提高轉(zhuǎn)化率。
3. 不適用的場(chǎng)景
熱力圖在以下分析場(chǎng)景中可能不適用:
- 無(wú)序數(shù)據(jù):對(duì)于無(wú)序的數(shù)據(jù),熱力圖可能無(wú)法提供有意義的分析結(jié)果。
- 數(shù)據(jù)缺失:如果數(shù)據(jù)中存在大量缺失值或空白區(qū)域,可能無(wú)法準(zhǔn)確地反映數(shù)據(jù)的密度和分布情況。
- 多個(gè)并行路徑:通常用于展示單一維度的數(shù)據(jù)分布情況。如果需要同時(shí)比較多個(gè)維度或路徑的數(shù)據(jù),熱力圖可能不是最合適的選擇。
4. 分析實(shí)戰(zhàn)
本次分析今年上半年南京主要的幾個(gè)區(qū)二手房的成交數(shù)量情況。
4.1. 數(shù)據(jù)來(lái)源
數(shù)據(jù)來(lái)自鏈家網(wǎng)南京地區(qū)的二手房成交的頁(yè)面。
整理好的數(shù)據(jù)可以從下面的地址下載:https://databook.top/lianjia/nj
各個(gè)區(qū)的二手房交易數(shù)據(jù)已經(jīng)整理成csv格式。
import os
df_dict = {}
#數(shù)據(jù)解壓的地址
fp = "d:/share/data/南京二手房交易"
for f in os.listdir(fp):
df = pd.read_csv(os.path.join(fp, f))
df_dict[f] = df
df_dict #合并所有區(qū)的數(shù)據(jù)4.2. 數(shù)據(jù)清理
清理數(shù)據(jù)的主要幾個(gè)步驟:
- 把
dealDate列轉(zhuǎn)換為 日期(datetime)格式 - 按周統(tǒng)計(jì)的交易數(shù)量
- 統(tǒng)計(jì)結(jié)果保存到新的字典中(
df_stat),取日期最近的10條
df_stat = {}
for k, df in df_dict.items():
df["dealDate"] = pd.to_datetime(df["dealDate"])
# 最近10周的交易量
week_sum = df.resample("W", on="dealDate").name.count()
week_sum = week_sum.sort_index(ascending=False)
df_stat[k.replace(".csv", "")] = week_sum.head(10)
df_stat4.3. 分析結(jié)果可視化
更加各個(gè)區(qū)的成交數(shù)量繪制最近10周的交易熱力圖。
x_labels = []
y_labels = df_stat.keys() # Y周的標(biāo)簽
data = []
for _, v in df_stat.items():
if len(x_labels) == 0: # X軸的日期標(biāo)簽
x_labels = v.index.strftime("%Y-%m-%d").tolist()
x_labels.reverse()
v = v.sort_index()
data.append(v.tolist())
plt.xticks(ticks=np.arange(len(x_labels)),
labels=x_labels,
rotation=45)
plt.yticks(ticks=np.arange(len(y_labels)),
labels=y_labels)
plt.imshow(data, cmap=plt.cm.hot_r)
plt.colorbar()
plt.show()
從熱力圖中可以看出,江寧區(qū)和浦口區(qū)的成交數(shù)量明顯多于其他區(qū),尤其是江寧區(qū)。
其次是鼓樓區(qū)和秦淮區(qū)稍好一些(可能和這2個(gè)區(qū)學(xué)區(qū)房比較多有關(guān)),而溧水區(qū)和六合區(qū)明顯交易量不行。
以上就是python中使用matplotlib繪制熱力圖的詳細(xì)內(nèi)容,更多關(guān)于python matplotlib熱力圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python使用shelve模塊實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)存儲(chǔ)的方法
這篇文章主要介紹了Python使用shelve模塊實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)存儲(chǔ)的方法,涉及shelve模塊實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的技巧,需要的朋友可以參考下2015-05-05
python使用socket進(jìn)行簡(jiǎn)單網(wǎng)絡(luò)連接的方法
這篇文章主要介紹了python使用socket進(jìn)行簡(jiǎn)單網(wǎng)絡(luò)連接的方法,實(shí)例分析了Python使用socket的基本技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Python實(shí)現(xiàn)繪制3D條形圖的示例詳解
這篇文章主要為大家學(xué)習(xí)介紹了如何利用Python實(shí)現(xiàn)繪制3D條形圖,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-07-07
使用python切片實(shí)現(xiàn)二維數(shù)組復(fù)制示例
今天小編就為大家分享一篇使用python切片實(shí)現(xiàn)二維數(shù)組復(fù)制示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Python語(yǔ)音合成之第三方庫(kù)gTTs/pyttsx3/speech橫評(píng)(內(nèi)附使用方法)
Python是一種非常強(qiáng)大的腳本語(yǔ)言,可以用來(lái)實(shí)現(xiàn)各種復(fù)雜的應(yīng)用,其中之一就是文本轉(zhuǎn)語(yǔ)音,即把文字轉(zhuǎn)換成聲音來(lái)發(fā)出,下面這篇文章主要給大家介紹了關(guān)于Python語(yǔ)音合成之第三方庫(kù)gTTs/pyttsx3/speech橫評(píng)的相關(guān)資料,文中還介紹了詳細(xì)的使用方法,需要的朋友可以參考下2023-05-05
Python灰度變換中的對(duì)數(shù)變換專(zhuān)項(xiàng)分析實(shí)現(xiàn)
灰度變換是指根據(jù)某種目標(biāo)條件按一定變換關(guān)系逐點(diǎn)改變?cè)磮D像中每個(gè)像素灰度值的方法。目的是改善畫(huà)質(zhì),使圖像顯示效果更加清晰。圖像的灰度變換處理是圖像增強(qiáng)處理技術(shù)中的一種非?;A(chǔ)、直接的空間域圖像處理方法,也是圖像數(shù)字化軟件和圖像顯示軟件的一個(gè)重要組成部分2022-10-10
Python常用工具類(lèi)之a(chǎn)dbtool示例代碼
本文主要介紹了Python中常用工具類(lèi)之a(chǎn)db命令的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
Python Numpy之linspace用法說(shuō)明
這篇文章主要介紹了Python Numpy之linspace用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04

