文章目录
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级函数绘图。

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

1万+

被折叠的 条评论
为什么被折叠?



