Seaborn系列(一):绘图基础、函数分类、长短数据类型支持

Seaborn是一个基于matplotlib的Python数据可视化库,提供了简洁的接口和预设样式,尤其适合统计图形。其特点包括对pandas支持良好、接口简洁、样式美观。基本绘图方法中,numpy数组和pandas DataFrame都能直接绘图。Seaborn函数按图形控制级别和功能分类,如axes级和figure级函数,以及关系、分布、统计和类别统计绘图等。长格式和宽格式数据都能方便地绘图,凌乱数据可通过melt转换处理。Seaborn的优势在于统一的figure级函数接口和统计绘图能力,但灵活性略逊于axes级函数。

Seaborn系列目录



1. Seaborn特点

Seaborn是一个基于matplotlib,进行了二次封装的可视化绘图库。

相比matplotlib:

  • 绘图函数接口简洁,对数据统计支持更好。绘图函数主要分为关系、分布、统计、绘图等几类,对功能进行了定制。
  • 对pandas数据类型支持更加友好(matplotlib不依赖scipy和pandas,但是seaborn依赖scipy和pandas)
  • 预定义风格、样式好看

2. 基本绘图方法

常用的numpy数组和pandas数据都可以非常方便的直接用于Seaborn绘图(当然python原生列表等数据也ok)。简单示例如下:

2.1 numpy数组数据绘图

import numpy as np
import seaborn as sns                #惯例将seaborn导入为sns
import matplotlib.pyplot as plt    #显示图形还是需要依靠matplotlib

#准备数据
x=np.linspace(0, 4*np.pi,100)
y=np.sin(x)

#绘图
sns.relplot(x=x,y=y,kind="line")   #用关系绘图函数绘制折线图

#显示图形
plt.show()

2.2 pandas数组数据绘图

import pandas as pd
import seaborn as sns                #惯例将seaborn导入为sns
import matplotlib.pyplot as plt    #显示图形还是需要依靠matplotlib

#准备数据
df=pd.DataFrame({'x':[1,2,3,4,5] ,'y':[1,3,2,4,5]})

#绘图
sns.relplot(x='x',y='y',data=df,kind="line")   #用关系绘图函数绘制折线图

#显示图形
plt.show()

注意seaborn是基于matplotlib的,显示还是要调用matplotlib的plt.show()。

3. Seaborn函数分类

3.1 根据图形控制级别分类

Seaborn绘图函数根据图形层级分为两种类型:

  • axes级:绘图函数在单个axes上绘图,函数返回值就是axes对象。
  • figure级:绘图函数在figure上绘图,返回一个FacetGrid对象,类似Figure对象,可以管理figure。

3.2 绘图函数功能分类

seaborn绘图函数根据功能可以分为关系绘图、统计绘图、分组绘图等,每组功能都提供了一个figure级函数(可以实现所有本组函数绘图功能,api统一),同时提供若干个axes级函数。

Seaborn的API是扁平结构的,所有绘图函数都直接在seaborn根模块下,函数数量也非常少。seaborn并非为了替代matplotlib,但是在很多情况下,seaborn会更加方便,尤其是统计相关绘图。

  • relplot(关系绘图):figure级函数
    • scatterplot:axes级函数(散点图)
    • lineplot:axes级函数(折线图)
  • displot(分布统计绘图):figure级函数
    • histplot:axes级函数(直方图)
    • kdeplot:axes级函数(核密度图)
    • ecdfplot:axes级函数(累积分布图)
    • rugplot:axes级函数(地毯图)
    • distplot:官方已废弃的过时api
  • catplot(类别统计绘图):figure级函数
    • striplot:axes级函数(分类散点条图)
    • swarmplot:axes级函数(分类散点簇图)
    • boxplot:axes级函数(箱形图)
    • violinplot:axes级函数(提琴图)
    • barplot:axes级函数(柱形图)
    • pointplot:axes级函数(分类统计点图)
    • countplot:axes级函数(数量统计图)
  • lmplot(回归统计绘图)::figure级函数
    • regplot:axes级函数(回归拟合图)
    • residplot:axes级函数(回归拟合误差图)
  • clustermap(矩阵绘图):figure级函数
    • heatmap:axes级函数(热度图)
  • 两个特殊的figure级函数(多图组合)
    • jointplot:figure级函数,返回JointGrid对象。同时绘制3个子图,在绘制二维图的基础上,在图行上方和右侧绘制分布图。
    • pairplot:figure级函数,返回PairGrid对象。(配对分布统计图)

jointplot和pairplot函数也是figure级函数,但是是两个比较特殊且重要的函数。都是将多个子图组合的图形。

以上即为seaborn所有的绘图函数,当然seaborn还包含一些样式设置、数据集相关函数。

figure函数直接在figure中绘制图形。axes绘图函数则是在axes中绘图,可以在函数中用ax参数指定要绘图的axes。
因此,多个axes级函数可以在同一个axes中叠加绘图,但是figure级函数不行,axes级函数灵活度更高。

几乎所有的axes级函数绘制的图形,都可以用figure级函数实现相同效果。比如直方图用displot和histplot都可以绘制,只需要把displot的kind参数设置为"hsit"就可以了。
figure级函数api统一,功能强大,因此,官方文档建议大多数情况下优先使用figure级函数。

  • figure级函数优点
    • 函数api统一
    • 容易进行figure级参数设置。
    • 可以在坐标系外部绘制图例(figure级别图例)。
  • figure级函数的缺点
    • 部分控制参数并不在函数参数中。(当然可以通过返回值进行控制)
    • 由于自己控制figure,很难在像axes级函数一样多种图像在同一个figure中绘制。

虽然figure级函数可以通过访问函数返回的对象添加其他元素。但是,当需要绘制复杂的、由多种不同类型图形组合的figure时,建议用matplotlib设置figure,用axes级函数绘图。

4. 长格式、短格式数据Seabor

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hustlei

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值