大家好,我是辰哥~

Matplotlib太臃肿,试试Seaborn_可视化


今天的干货Seaborn可视化库

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

Matplotlib太臃肿,试试Seaborn_可视化_02

Seaborn Overview Matplotlib太臃肿,试试Seaborn_人工智能_03



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对象类型Matplotlib太臃肿,试试Seaborn_python_04

  • 多子图

Figure水平多子图一行代码搞定,

sns.displot(data=penguins, x="flipper_length_mm", hue="species", col="species")

Matplotlib太臃肿,试试Seaborn_人工智能_05

  • 矩阵图 (pairplot)
sns.pairplot(data=penguins, hue="species")

Matplotlib太臃肿,试试Seaborn_python_06

  • 矩阵图 (PairGrid)

​PairGrid​​可使矩阵图更加个性化,

g = sns.PairGrid(penguins, diag_sharey=False)
g.map_upper(sns.scatterplot) #右上角做散点图
g.map_lower(sns.kdeplot) #左下角做等高线图
g.map_diag(sns.histplot) #中间做直方图

Matplotlib太臃肿,试试Seaborn_人工智能_07



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对象类型

Matplotlib太臃肿,试试Seaborn_可视化_08

  • 多子图

比较繁琐,

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()

Matplotlib太臃肿,试试Seaborn_json_09

  • 从上面实例可知,在简单图形上,Figure方法和Axes方式结果几乎一样,在多子图绘制时,Figure水平优势明显;
  • 相比于jointplot/pairplot,JointGrid/PairGrid可以更个性化。
  • 本文简要介绍了Seaborn的主要方法,详细可参考历史文章及官网。