【Python】一文學(xué)會(huì)Seaborn!
Matplotlib繪制一張美圖需要很多參數(shù)調(diào)整,于是就出現(xiàn)了high-level版的Seaborn,幾行代碼即可輸出美美的圖形,那么Seaborn是如何做到的?
Seaborn主要有兩種圖形實(shí)現(xiàn)方法Figure水平「下圖綠色格子中所有方法,如jointplot、JointGrid」、Axes水平「如stripplot、swarmplot等」,本文梳理Seaborn主要結(jié)構(gòu),助快速掌控Seaborn??

Figure水平方法
此時(shí),通過(guò)seaborn.axisgrid.FacetGrid對(duì)象作圖,以displot為例,
單個(gè)圖
import?seaborn?as?sns
import?pandas?as?pd
penguins?=?sns.load_dataset("penguins")#導(dǎo)入數(shù)據(jù)
g?=?sns.displot(data=penguins,
????????????????x="flipper_length_mm",
????????????????hue="species",
????????????????multiple="stack",
????????????????kind="hist")#一行代碼出圖
sns.set(style='whitegrid',?font_scale=1.2)
print(type(g))
\ # 注意此處g對(duì)象類(lèi)型
多子圖
Figure水平多子圖一行代碼搞定,
sns.displot(data=penguins,?x="flipper_length_mm",?hue="species",?col="species")

矩陣圖 (pairplot)
sns.pairplot(data=penguins,?hue="species")

矩陣圖 (PairGrid)
PairGrid可使矩陣圖更加個(gè)性化,
g?=?sns.PairGrid(penguins,?diag_sharey=False)
g.map_upper(sns.scatterplot)??#右上角做散點(diǎn)圖
g.map_lower(sns.kdeplot)??#左下角做等高線圖
g.map_diag(sns.histplot)??#中間做直方圖

Axes水平方法
此時(shí),直接在matplotlib.axes._subplots.AxesSubplot對(duì)象上作圖,以hisplot為例,
單個(gè)圖
import?seaborn?as?sns
import?pandas?as?pd
penguins?=?sns.load_dataset("penguins")
g?=?sns.histplot(data=penguins,
?????????????????x="flipper_length_mm",
?????????????????hue="species",
?????????????????multiple="stack")
sns.set(style='whitegrid',?font_scale=1.2)
print(type(g))
\ # 注意此處g對(duì)象類(lèi)型

多子圖
比較繁瑣,
import?matplotlib.pyplot?as?plt
f,?axs?=?plt.subplots(1,
??????????????????????2,
??????????????????????figsize=(8,?4),
??????????????????????gridspec_kw=dict(width_ratios=[4,?3]))
sns.scatterplot(data=penguins,
????????????????x="flipper_length_mm",
????????????????y="bill_length_mm",
????????????????hue="species",
????????????????ax=axs[0])
sns.histplot(data=penguins,
?????????????x="species",
?????????????hue="species",
?????????????shrink=.8,
?????????????alpha=.8,
?????????????legend=False,
?????????????ax=axs[1])
f.tight_layout()

從上面實(shí)例可知,在簡(jiǎn)單圖形上,F(xiàn)igure方法和Axes方式結(jié)果幾乎一樣,在多子圖繪制時(shí),F(xiàn)igure水平優(yōu)勢(shì)明顯;
相比于jointplot/pairplot,JointGrid/PairGrid可以更個(gè)性化。
本文簡(jiǎn)要介紹了Seaborn的主要方法,詳細(xì)可參考?xì)v史文章及官網(wǎng)。
致謝:http://seaborn.pydata.org/index.html
-END-
往期精彩回顧
評(píng)論
圖片
表情
