关系型绘图
seaborn.replot()
这个函数功能非常强大,可以用来表示多个变量之间的关联关系。默认情况下是绘制散点图,也可以绘制线性图,具体绘制什么图形是通过kind参数来决定的。实际上以下两个函数就是relplot的特例:
- 散点类型:scatterplot -→replot(kind=“scatter”)
- 线性类型:lineplot -→replot(kind=“line”)
基本使用
import seaborn as sns
tips = sns.load_dataset("tips",cache=True)
sns.replot(x="total_bill",y="tip",data=tips)

hue参数
hue参数是用来控制第三个变量的颜色显示的。比如我们在以上图的基础之上体现出星期几的参数,name可以通过以下代码来实现:
sns.replot(x="total_bill",y="tip",hue="day",data=tips)

添加col和row参数
col和row,可以将图根据某个属性的值的个数分割成多列或者多行。比如在以上图的基础之上我们想要把Lunch(午餐)和Dinner(晚餐)分割成两个图来显示,那么可以通过以下代码来实现:
sns.replot(x="total_bill",y="tip",hue="day",col="time",data=tips)
**
绘制折线图
relplot通过设置kind="line"可以绘制折线图。并且他的功能比plt.plot更加强大。plot只能指定具体的x和y轴的数据(比如x轴是N个数,y轴也必须为N个数)。而relplot则可以在自动在两组数据中进行计算绘图。示例代码如下:
fmri = sns.load_dataset("fmri")
sns.replot(x="timepoint",y="signal",kind="line",data=fmri)

分类绘图
分类图的绘制,采用的是sns.catplot来实现的。cat是category的简写。这个方法默认绘制的是分类散点图,如果想要绘制其他类型的图,同样也是通过kind参数来指定。
主要分为
- 分类散点图
- 分类分布图
- 分类统计图
分类散点图
分类散点图比较适合数据量不是很多的情况,他是用catplot来实现,但是也有以下两个特别的方法。
- stripplot():catplot(kind=“strip”) 默认的
- swarmplot():catplot(kind=“swarm”)
sns.catplot(x="day",y="total_bill",data=tips,hue="sex")

sns.catplot(x="day",y="total_bill",data=tips,hue="sex",kind="swarm")

分类分布图
分类分布图,主要是根据分类来看,然后在每个分类下数据的分布情况。也是通过catplot来实现,以下三个方法分别是不同的kind参数:
- 箱型图:boxplot() (with kind=“box”)
- 小提琴图:violinplot() (with kind=“violin”)
箱型图

countries = {
'CHN':'中国',
'JPN':"日本",
'KOR':'韩国',
'USA':"美国",
'CAN':"加拿大",
'BRA':"巴西",
'GBR':"英国",
'FRA':"法国",
'ITA':"意大利",
'ETH':"埃塞俄比亚",
'KEN':"肯尼亚",
'NIG':"尼日利亚",
}
小提琴图
小提琴实际上就是两个对称的核密度曲线合并起来,然后中间是一个箱线图(也可以为其他图)组成的。通过小提琴图可以看出数据的分布情况。示例代码如下:
sns.violinplot(x="day",y="total_bill",data=tips,inner="quartile",hue="sex",split=True)

分类统计图
分类统计图,则是根据分类,统计每个分类下的数据的个数或者比例。有以下几种方式:
- 条形图:barplot() (with kind=“bar”)
- 柱状图:countplot() (with kind=“count”)
- 点线图:pointplot() (with kind=“point”)
条形图
seaborn中的条形图具有统计功能,可以统计出比例,平均数,也可以按照你想要的的统计函数来统计。示例代码如下:
sns.catplot(x="day",y="total_bill",data=tips,kind="bar")

柱状图
柱状图是专门用来统计某个单一变量出现数量的图形。示例代码如下:
sns.catplot(x="sex",data=titanic,kind="count")

点线图
点线图可以非常方便的看到变量之间的趋势变化。示例代码如下:
sns.catplot(x="sex",y="survived",data=titanic,kind="point",hue="class")

分布绘图
分布绘图主要分为单变量分布以及二变量分布和pairplot
单分量分布
单一变量主要就是通过直方图来绘制。在seaborn中直方图的绘制采用的是distplot,其中dist是distribution的简写,不是histogram的简写。示例代码如下:
titanic = pd.read_csv("./seaborn-data-master/titanic.csv")
titanic.head()
sns.distplot(titanic["age"])

二变量分布
多变量分布图可以看出两个变量之间的分布关系。一般都是采用多个图进行表示。多变量分布图采用的函数是jointplot。
tips = sns.load_dataset("tips")
g = sns.jointplot(x="total_bill", y="tip", data=tips)

- 通过设置
kind='reg'可以设置回归绘图和核密度曲线
通过设置kind='hex'可以绘制六边形图
jointplot其它常用参数
x,y,data:绘制图的数据。
kind:scatter、reg、resid、kde、hex。
color:绘制元素的颜色。
height:图的大小,图会是一个正方形。
ratio:主图和副图的比例,只能为一个整形。
space:主图和副图的间距。
dropna:是否需要删除x或者y值中出现了NAN的值。
marginal_kws:副图的一些属性,比如设置bins、rug等。
pairplot
sns.pairplot(tips,vars=["total_bill","tip"])

默认情况下,对角线的图(x和y轴的列相同)是直方图,其他地方的图是散点图,如果想要修改这两种图,可以通过diag_kind和kind来实现。其中这两个参数可取的值为:
diag_kind:auto,hist,kde。kind:scatter,reg。

线性回归绘图
线性回归图可以帮助我们看到数据的关系趋势。在seaborn中可以通过regplot和lmplot两个函数来实现。regplot的x和y可以为Numpy数组、Series等变量。而lmplot的x和y则必须为字符串,并且data的值不能为空:
- regplot(x,y,data=None)。
- lmplot(x,y,data)。
sns.lmplot(x="total_bill",y="tip",data=tips)

本文详细介绍了Seaborn库在关系型绘图方面的能力,包括seaborn.replot()的基本使用,如绘制散点图和线性图,以及分类绘图、分布绘图和线性回归绘图的各种方法。通过hue参数控制颜色显示,col和row参数分割图表,同时展示了stripplot、swarmplot、boxplot、violinplot、barplot、countplot、pointplot、distplot、jointplot和pairplot等函数的应用,帮助理解数据间的关系和分布。

1100

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



