文科生自學Python-用SeabornPlotly畫熱力圖

--世界上只有一種真正的英雄主義,就是看清生活的真相之後依然熱愛生活,學習程式設計成就更好的自己--

Python語言簡潔生動,特別適合文科生學習入門IT世界,用幾十行程式碼就能夠做一個完整的爬蟲指令碼,開發效率槓槓的!短時間內即可解決工作和學習中碰到的各種棘手問題。

(本人外語專業畢業,機緣巧合愛上程式設計,自學道路曲曲折折,痛並快樂!)

在這裡總結一下自學Python遇到的難點和重點,分享碼過的程式碼和要點總結,希望能夠給初學者一點啟示和鼓勵,同時願意結交更多大神交流有助提升自己的水平。

今天分享一下大名鼎鼎的

熱力圖-heatmap

,主要使用Seaborn資源庫來製圖演示,最後也用Plotly做一個簡單展示和對比,大家都知道熱力圖可以生動對比不同資料樣本數值大小情況,下面選取的案例樣本還是Plotly內建的

世界人口資料集

1.調包並抽取幾個國家生成一個特定的資料集合,方便後續製圖和演示:

#import plotly to get the datasetsimport plotly。graph_objects as goimport plotly_express as px#import seaborn to draw heatmapimport matplotlib。pyplot as pltimport seaborn as snsimport pandas as pd#Get a dataset of different countriesdf = px。data。gapminder()。query(“country == [‘France’,‘Germany’,‘Italy’,‘Canada’,‘Spain’,‘Thailand’,‘Argentina’]”) #‘Japan’df[“life”] = df[“lifeExp”]。astype(int)df[“pop-KW”] = (df[“pop”]/10000000)。astype(int) #GGet pop 1000Wdisplay(df)

文科生自學Python-用Seaborn/Plotly畫熱力圖

選取了法國,德國,義大利,西班牙,加拿大,泰國和阿根廷並檢視:

2.在製圖之前加工資料成為交叉二維表,方便直接生成熱力圖

#get the data into a proper pivot to draw heatmappop_life_heatmap = df。pivot(“country”, “year”, “life”)display(pop_life_heatmap)

文科生自學Python-用Seaborn/Plotly畫熱力圖

透過pivot方法得到交叉表(抽取壽命長短資料),一般橫向對應的是X軸,縱向對應的是Y軸,表格顯示不同國家在不同年代國民平均壽命情況:

3.透過sns.heatmap函式直接繪製熱力圖

#https://seaborn。pydata。org/generated/seaborn。heatmap。html?highlight=fmt#seaborn。heatmapfig=sns。heatmap(pop_life_heatmap,annot=False,fmt=“d”,cmap=“RdBu_r”)fig

文科生自學Python-用Seaborn/Plotly畫熱力圖

生成的熱力圖略小,考慮調整影象大小:

4.新增引數f, ax = plt.subplots(figsize=(x, x))調整影象大小

#https://seaborn。pydata。org/tutorial/color_palettes。html#tools-for-choosing-color-palettesf, ax = plt。subplots(figsize=(15, 10)) #set the size of heatmapfig=sns。heatmap(pop_life_heatmap,annot=False,fmt=“d”,linewidths=0。5,cmap=“RdBu_r”) #fig

文科生自學Python-用Seaborn/Plotly畫熱力圖

考慮在每個色塊備註上數值,方便更具體的對比:

5.調整引數選項annot=True即可顯示數值

#https://seaborn。pydata。org/tutorial/color_palettes。html#tools-for-choosing-color-palettesf, ax = plt。subplots(figsize=(15, 10)) #set the size of heatmapfig=sns。heatmap(pop_life_heatmap,annot=True,fmt=“d”,linewidths=0。5,cmap=“RdBu_r”) #fig

文科生自學Python-用Seaborn/Plotly畫熱力圖

是不是感覺有點專業的味道了,而且直觀對比不同國家壽命情況:

6.還可變換不同顏色主題風格,且可以調整色塊間距

#https://seaborn。pydata。org/tutorial/color_palettes。html#tools-for-choosing-color-palettesf, ax = plt。subplots(figsize=(15, 10)) #set the size of heatmapfig=sns。heatmap(pop_life_heatmap,annot=True,fmt=“d”,linewidths=2,cmap=“viridis”) #Spectral viridisfig

文科生自學Python-用Seaborn/Plotly畫熱力圖

引數linewidths可以調整色塊間距大小,Seaborn提供了多個不同顏色主題風格,相關連結參考如下:

https://seaborn.pydata.org/tutorial/color_palettes.html#tools-for-choosing-color-palettes:

7.給熱力圖新增標題

#https://seaborn。pydata。org/tutorial/color_palettes。html#tools-for-choosing-color-palettesf, ax = plt。subplots(figsize=(15, 10)) #set the size of heatmapfig=sns。heatmap(pop_life_heatmap,annot=True,fmt=“d”,linewidths=0。5,cmap=“YlOrBr”) #viridis YlOrBr#set title for itfig。set_title(label=“Heatmap of Pop LifeEXP from different Countries”,fontdict = {“fontsize”:11})#set position for the xaxis ticksfig

文科生自學Python-用Seaborn/Plotly畫熱力圖

新增引數set_title即可:

8.把年份標記資訊顯示調整到上方

#https://seaborn。pydata。org/tutorial/color_palettes。html#tools-for-choosing-color-palettesf, ax = plt。subplots(figsize=(15, 10)) #set the size of heatmapfig=sns。heatmap(pop_life_heatmap,annot=True,fmt=“d”,linewidths=0。5,cmap=“Spectral”) #viridis YlOrBr#set title for itfig。set_title(label=“Heatmap of Pop LifeEXP from different Countries”,fontdict = {“fontsize”:11})#set position for the xaxis ticksfig。xaxis。set_ticks_position(“top”) fig

文科生自學Python-用Seaborn/Plotly畫熱力圖

新增和設定引數xaxis.set_ticks_position即可:

看到這裡是不是感嘆Seaborn真的很給力啊!!!幾行程式碼就能繪製特別優雅的熱力圖,能夠直觀展示資料間的大小關係,接下來簡單講一下如何用Plotly實現吧:

9.同樣使用剛剛的資料集合

#draw heatmap with plotlypop_life_heatmap = df。pivot(“country”, “year”, “life”)display(pop_life_heatmap)

文科生自學Python-用Seaborn/Plotly畫熱力圖

檢視處理好的交叉表:

10.透過imshow製圖函式生成熱力圖

#draw heatmap with plotly #https://plotly。com/python/imshow/fig = px。imshow(pop_life_heatmap,labels=dict(x=“Year”, y=“Country”, color=“LifeExp”))fig。show()

文科生自學Python-用Seaborn/Plotly畫熱力圖

得到的熱力圖看起來也不錯,還能進行一定的互動:

11.同樣考慮改變一下顏色主題風格

fig = px。imshow(pop_life_heatmap,color_continuous_scale=‘RdBu_r’,labels=dict(x=“Year”, y=“Country”, color=“LifeExp”))fig。show()

文科生自學Python-用Seaborn/Plotly畫熱力圖

大家看到這裡也趕緊動手試試吧!!

END

我為人人,人人為我!!歡迎大家關注,點贊和轉發!!!

~~人生不是賽場,夢想不容退場~~不斷努力學習蛻變出一個更好的自己,不斷分享學習路上的收穫和感悟幫助他人成就自己!!!