5-2 Seaborn绘图

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

关系型绘图

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参数
colrow,可以将图根据某个属性的值的个数分割成多列或者多行。比如在以上图的基础之上我们想要把Lunch(午餐)Dinner(晚餐)分割成两个图来显示,那么可以通过以下代码来实现:

sns.replot(x="total_bill",y="tip",hue="day",col="time",data=tips)

**在这里插入图片描述
绘制折线图

relplot通过设置kind="line"可以绘制折线图。并且他的功能比plt.plot更加强大。plot只能指定具体的xy轴的数据(比如x轴是N个数,y轴也必须为N个数)。而relplot则可以在自动在两组数据中进行计算绘图。示例代码如下:

fmri = sns.load_dataset("fmri")
sns.replot(x="timepoint",y="signal",kind="line",data=fmri)

在这里插入图片描述

分类绘图

分类图的绘制,采用的是sns.catplot来实现的。catcategory的简写。这个方法默认绘制的是分类散点图,如果想要绘制其他类型的图,同样也是通过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,其中distdistribution的简写,不是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:绘制图的数据。
    kindscatterregresidkdehex
    color:绘制元素的颜色。
    height:图的大小,图会是一个正方形。
    ratio:主图和副图的比例,只能为一个整形。
    space:主图和副图的间距。
    dropna:是否需要删除x或者y值中出现了NAN的值。
    marginal_kws:副图的一些属性,比如设置binsrug等。

pairplot

sns.pairplot(tips,vars=["total_bill","tip"])

在这里插入图片描述
默认情况下,对角线的图(x和y轴的列相同)是直方图,其他地方的图是散点图,如果想要修改这两种图,可以通过diag_kindkind来实现。其中这两个参数可取的值为:

  1. diag_kindauto, hist, kde
  2. kindscatter, reg
    在这里插入图片描述

线性回归绘图

线性回归图可以帮助我们看到数据的关系趋势。在seaborn中可以通过regplotlmplot两个函数来实现。regplotxy可以为Numpy数组Series等变量。而lmplotxy则必须为字符串,并且data的值不能为空:

  1. regplot(x,y,data=None)。
  2. lmplot(x,y,data)。
sns.lmplot(x="total_bill",y="tip",data=tips)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值