seaborn分为一下两种绘制函数
- 轴绘制函数 ( axes-level functions ),这一类函数把数据绘制到一个 matplotlib 的对象 matplotlib.pyplot.Axes ;
- 图绘制函数 ( figure-level functions ),这一类函数是通过一个 seaborn 对象(通常是 FacetGrid )与 matplotlib 交互。
图绘制函数相当于对轴绘制函数做了一层封装,方便用户调用。在图绘制函数可以设置不同的kind
关键字便可以调用对应的轴绘制函数。一般来讲图绘制函数就足够了。而若是需要用到更为复杂和精确的操作,那么就可以用轴绘制函数。它相当于对matplotlib的一个即插即用的补充工具。
1. 变量分布图函数displot
用sns.boxplot():查看数值变量的取值范围,是否有异常值。
sns.boxplot(data=penguin_df,x="bill_length_mm")
利用boxplot可以画出其盒须图,包括
- 理论最小值( m i n min min) 数据中小于理论最小值为异常值。
- 下四分位数( Q 1 Q_1 Q1) 25%的数据小于该值
- 中位数( m e d i a n median median)
- 上四分位数( Q 3 Q_3 Q3) 75%的数据小于该值
- 理论最大值(
m
a
x
max
max)。数据中大于理论最大值为异常值。
I Q R = Q 3 − Q 1 m i n = Q 1 − 1.5 ∗ I Q R m a x = Q 3 + 1.5 ∗ I Q R IQR = Q_3 - Q_1 \\ min = Q1 - 1.5*IQR \\ max = Q3 +1.5*IQR IQR=Q3−Q1min=Q1−1.5∗IQRmax=Q3+1.5∗IQR
sns.displot():查看变量的分布情况
## 默认为直方图
seaborn.displot(data=None, *, x=None, y=None, hue=None,
row=None, col=None, weights=None, kind='hist', rug=False,
rug_kws=None, log_scale=None, legend=True, palette=None,
hue_order=None, hue_norm=None, color=None, col_wrap=None,
row_order=None, col_order=None, height=5, aspect=1,
facet_kws=None, **kwargs)
displot
默认为直方图,可以通过kind
关键字设置为其他图
- kind = "hist” 默认,类似于histplot(),绘制直方图
- kind=“kde” 类似于kdeplot() 绘制核密度估计图
- kind=“ecdf” 类似于ecdfplot() 绘制累积分布函数图
- kid关键字只能绘制前三种图,而绘制边缘分布图,则需要则需要指定rug = True,类似于rugplot()
在displot
中,可以同时绘制直方图,核密度估计图。更直观地显示数据分布。
sns.displot(x="bill_length_mm",data=penguin_df,kde=True)
通过设置hue
关键字,指定类别变量,显示不同种类分布
sns.displot(x="bill_length_mm",data=penguin_df,kind="kde",
hue="species")
设置log_scale=True
,对skewed data偏斜数据取对数,使之分布更为均匀。
sns.displot(data=dia_df,x="price")
sns.displot(data=dia_df,x="price",log_scale=True)
设置row
和col
分类展示不同子图
sns.displot(data=penguin_df,x="bill_length_mm",row="sex",
col="island",hue="species",kind="kde")
关系分析
sns.relplot():绘制数值变量关系图
seaborn.relplot(*, x=None, y=None, hue=None, size=None,
style=None, data=None, row=None, col=None, col_wrap=None,
row_order=None, col_order=None, palette=None, hue_order=None,
hue_norm=None, sizes=None, size_order=None, size_norm=None,
markers=None, dashes=None, style_order=None, legend='auto',
kind='scatter', height=5, aspect=1, facet_kws=None, units=None,
**kwargs)
绘制data数据中x和y两个列之间的分布关系
displot
默认为散点图,可以通过kind
关键字设置为其他图
- kind="scatter"绘制散点图,调用scatterplot()
- kind="line"绘制曲线图,调用lineplot(),比较适合时序图如股票
- markers可以指定点的形状
- style设置为不同类别设置不同形状
sns.lmplot():分析两个数值变量的线性关系
seaborn.lmplot(*, x=None, y=None, data=None, hue=None, col=None,
row=None, palette=None, col_wrap=None, height=5, aspect=1,
markers='o', sharex=None, sharey=None, hue_order=None,
col_order=None, row_order=None, legend=True, legend_out=None,
x_estimator=None, x_bins=None, x_ci='ci', scatter=True,
fit_reg=True, ci=95, n_boot=1000, units=None, seed=None, order=1,
logistic=False, lowess=False, robust=False, logx=False,
x_partial=None, y_partial=None, truncate=True, x_jitter=None,
y_jitter=None, scatter_kws=None, line_kws=None, facet_kws=None,
size=None)
sns.displot():绘制两个变量的联合分布
sns.displot(data=penguin_df,x="bill_length_mm",
y="bill_depth_mm",kind="kde",rug=True)
sns.jointplot():绘制两个变量的联合分布和各自分布
参考文献