相关文章推荐
果断的青椒  ·  Devexpress ...·  1 年前    · 
坏坏的春卷  ·  【Clickhouse】Clickhouse ...·  1 年前    · 
Matplotlib太难,来学Seaborn呀

Matplotlib太难,来学Seaborn呀

  • Matplotlib绘制一张美图需要很多参数调整,于是就出现了high-level版的Seaborn,几行代码即可输出美美的图形,那么Seaborn是如何做到的?
  • Seaborn主要有两种图形实现方法Figure水平「下图绿色格子中所有方法,如jointplot、JointGrid」、Axes水平「如stripplot、swarmplot等」, 本文梳理Seaborn主要功能,助快速掌握Seaborn

以上详细教程见:


Figure水平方法

此时,通过 seaborn.axisgrid.FacetGrid 对象作图,以 displot 为例,

  • 单个图
import seaborn as sns
import pandas as pd
penguins = sns.load_dataset("penguins")#导入数据
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,
                      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",