社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python】一文学会Seaborn!

机器学习初学者 • 3 年前 • 308 次点击  
  • Matplotlib绘制一张美图需要很多参数调整,于是就出现了high-level版的Seaborn,几行代码即可输出美美的图形,那么Seaborn是如何做到的?


  • Seaborn主要有两种图形实现方法Figure水平「下图绿色格子中所有方法,如jointplot、JointGrid」、Axes水平「如stripplot、swarmplot等」,本文梳理Seaborn主要结构,助快速掌控Seaborn👇
Seaborn Overview
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))

\ # 注意此处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))

\ # 注意此处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()
  • 从上面实例可知,在简单图形上,Figure方法和Axes方式结果几乎一样,在多子图绘制时,Figure水平优势明显;

  • 相比于jointplot/pairplot,JointGrid/PairGrid可以更个性化。

  • 本文简要介绍了Seaborn的主要方法,详细可参考历史文章及官网。

致谢:http://seaborn.pydata.org/index.html

-END-

往期精彩回顾




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135171
 
308 次点击