seaborn

关系图

首先导入库函数:

1
2
3
4
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

scatterplot散点图

1、参数

散点图是利用散点来描述两个变量的联合分布,scatterplot 适用于变量都是数字的情况。在后面的Categorical plots(分类图)\中,我们将会看到使用散点图可视化*分类数据*的专门工具

1
2
3
4
5
6
7
#scatterplot参数
seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None,
data=None, palette=None, hue_order=None, hue_norm=None, sizes=None,
size_order=None, size_norm=None, markers=True, style_order=None,
x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000,
alpha='auto', x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)

2、样例

1
2
3
4
# 使用seaborn的数据
tips = sns.load_dataset('tips')
sns.scatterplot(x='total_bill',y='tip',data=tips)
plt.show()

image-20220914233259608

1
2
sns.scatterplot(x='total_bill',y='tip',hue='day',style='time',size='size',data=tips)
plt.show()

image-20220914233347801

lineplot线图

1、参数

1
2
3
4
5
6
seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None,
data=None, palette=None, hue_order=None, hue_norm=None, sizes=None,
size_order=None, size_norm=None, dashes=True, markers=None,
style_order=None, units=None, estimator='mean', ci=95, n_boot=1000,
sort=True, err_style='band', err_kws=None, legend='brief', ax=None, **kwargs)

2、样例

1
2
3
fmri = sns.load_dataset('fmri')
sns.lineplot(x="timepoint", y="signal", data=fmri)
# 阴影是默认的置信区间,可设置ci=0,将其去除

image-20220914233512209

1
2
3
4
sns.lineplot(x="timepoint", y="signal",hue="event", style="event",
markers=True, dashes=False, data=fmri)
# markers=True表示使用不同的标记
# dashes=True表示一条实线,一条虚线

image-20220914233900396

replot关系图

1、参数

1
2
3
4
5
6
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='brief', kind='scatter', height=5, aspect=1,
facet_kws=None, **kwargs)

相当于lineplot和scatterplot的归约,可以通过kind参数指定画什么图形,参数解释如下:

  • kind: 默认是’scatter’,也可以选择kind=‘line’
  • sizes: List、dict或tuple,可选,说白了就是图片大小,注意和size区分;
  • col、row: col指定列的分组变量,row指定行的分组变量

2、样例

1
2
3
4
tips = sns.load_dataset("tips")
g = sns.relplot(x="total_bill", y="tip", data=tips)
#两者效果一模一样
ax = sns.scatterplot(x="total_bill", y="tip", data=tips)

image-20220914234330383

1
2
sns.relplot(x="total_bill", y="tip", hue="time", size="size",
palette=["b", "r"], sizes=(10, 100),col="time",row='sex', data=tips)

image-20220914234703791

Categorical plots分类图

Categorical plots(分类图) 具体可以分为下main三种类型,11种图形:

  • Categorical scatterplots(分类散点图)
    • stripplot(分布散点图)
    • swarmplot(分布密度散点图)
  • Categorical distribution plots(分类分布图)
    • boxplot(箱型图)
    • violinplot(小提琴图)
    • violinplot+stripplot(小提琴图+分布散点图)
    • violinplot+swarmplot(小提琴图+分布密度散点图)
    • boxplot+stripplot(箱线图+分布散点图)
  • Categorical estimate plots(分类估计图)
    • barplot(条形图)
    • countplot(计数图)
    • piontplot(点图)
    • catplot()

Categorical scatterplots分类散点图

stripplot分布散点图

stripplot(分布散点图) 就是其中一个变量是分类变量的scatterplot(散点图)。stripplot(分布散点图)一般并不单独绘制,它常常与boxplot和violinplot联合起来绘制,作为这两种图的补充。

1、参数

1
2
3
seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, 
hue_order=None, jitter=True, dodge=False, orient=None, color=None,
palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)
  • order:用order参数进行筛选分类类别,例如:order=[‘sun’,‘sat’];
  • jitter:抖动项,表示抖动程度,可以是float,或者True。如果不抖动的话,那么散点就会呈现一条直线了,并不利于可视化
  • dodge:重叠区域是否分开,当使用hue时,将其设置为True,将沿着分类轴将不同色调级别的条带分开。
  • orient:“v” | “h”,vertical(垂直) 和 horizontal(水平)的意思;

2、样例

1
2
tips = sns.load_dataset("tips")
sns.stripplot(x="day", y="total_bill", data=tips)

image-20220914235614433

1
2
sns.stripplot(x="day", y="total_bill", hue="smoker",data=tips,
jitter=True,palette="Set2", dodge=False)

image-20220914235844046

swarmplot分布密度散点图

这个函数类似于stripplot(),但是对点进行了调整(只沿着分类轴),使每个点都不会重叠。这更好地表示了值的密度分布,但显然,不适用大量观测的可视化。使用方法与strippplot相似

Categorical distribution plots分类分布图

boxplot箱型图

1、参数

boxplot(箱型图) 就是描述变量关于不同类别的分布情况。框显示数据集的四分位数,线显示分布的其余部分,它能显示出一组数据的最大值、最小值、中位数及上下四分位数,使用四分位数范围函数的方法可以确定“离群值”的点。具体用法如下:

1
2
3
seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None, 
hue_order=None, orient=None, color=None, palette=None, saturation=0.75,
width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)
  • saturation:饱和度,可设置为1;
  • width:float,控制箱型图的宽度大小;
  • fliersize:float,用于指示离群值观察的标记大小;
  • whis:可理解为异常值的上限IQR比例;

2、样例

1
sns.boxplot(x="day", y="total_bill", data=tips)

image-20220915001012931

1
2
sns.boxplot(x="day", y="total_bill", hue="time",data=tips,
linewidth=0.5,saturation=1,width=1,fliersize=3)

image-20220915001233378