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


Figure水平方法
此時,通過seaborn.axisgrid.FacetGrid對象作圖,以displot為例,
單個圖
import seaborn as sns
import pandas as pd
penguins = sns.load_dataset("penguins")#導入數(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))
\<class 'seaborn.axisgrid.FacetGrid'> # 注意此處g對象類型
多子圖
Figure水平多子圖一行代碼搞定,
sns.displot(data=penguins, x="flipper_length_mm", hue="species", col="species")

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

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

Axes水平方法
此時,直接在matplotlib.axes._subplots.AxesSubplot對象上作圖,以hisplot為例,
單個圖
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))
\<class matplotlib.axes._subplots.AxesSubplot> # 注意此處g對象類型

多子圖
比較繁瑣,
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()

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