Seaborn常见图形绘制(kdeplot、distplot)

本文详细介绍了Seaborn绘图库中的kdeplot和distplot函数使用方法,包括参数解析和实例演示,帮助读者掌握如何利用Seaborn进行数据可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

seaborn是基于matplotlib的Python可视化库,在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能让图变得精致好看。

一、kdeplot(核密度估计图)

核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验的方法之一。通过核密度估计图可以比较直观地看出数据样本本身的分布特征。

seaborn.kdeplot(data,data2=None,shade=False,vertical=False,kernel='gau',bw='scott',gridsize=100,cut=3,clip=None,legend=True,cumulative=False,shade_lowest=True,cbar=False, cbar_ax=None, cbar_kws=None, ax=None, *kwargs)

通过一些具体的例子来学习kdeplot的参数用法:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# 切换到seaborn的默认配置
sns.set()

# 绘制简单的一维数组,随机生成100个符合正态分布的数
x = np.random.randn(100)

sns.kdeplot(x)
plt.show()

在这里插入图片描述

cut参数:表示绘制的时候,切除带宽往数轴极限值的多少(默认为3)

sns.kdeplot(x,cut=0)

在这里插入图片描述

cumulative参数:是否绘制累积分布

sns.kdeplot(x,cumulative=True)

在这里插入图片描述

shade参数:若为True,则在kde曲线下面的区域进行阴影处理,color空值曲线和阴影的颜色

sns.kdeplot(x,shade=True,color='red')

在这里插入图片描述

vertical参数:表示以X轴进行绘制还是以Y轴进行绘制

sns.kdeplot(x,vertical=True)

在这里插入图片描述

二元kde图像

y = np.random.randn(100)
sns.kdeplot(x,y,shade=True)

在这里插入图片描述

cbar参数:添加一个颜色棒(颜色棒在二元kde图像中才有)

sns.kdeplot(x,y,shade=True,cbar=True)

在这里插入图片描述

二、displot

distplot()集合了matplotlib的hist()与核密度函数kdeplot()的功能,增加了rugplot分布观察条显示与利用scipy库fit拟合参数分布的新颖用途。具体用法如下:

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)

hist()表示直方图,又叫做质量分布图。通过表示沿数据范围形成封箱,然后绘制条形以显示落入每个分箱贯彻的次数的数据分布。

sns.distplot(x,color='r')

在这里插入图片描述

可以通过hist和kde参数调节是否显示直方图及和密度估计(默认hist,kde均为True)

# 创建一个一行三列的画布
fig,axes = plt.subplots(1,3)
# 左图
sns.distplot(x,ax=axes[0])
# 中图
sns.distplot(x,hist=False,ax=axes[1])
# 右图
sns.distplot(x,kde=False,ax=axes[2])

在这里插入图片描述

bins:int或list,控制直方图的划分

fig,axes = plt.subplots(1,2)
sns.distplot(x,kde=False,bins=20,ax=axes[0])
sns.distplot(x,kde=False,bins=[x for x in range(4)],ax=axes[1])

在这里插入图片描述

rug:控制是否生成观测数值的小细条

fig,axes = plt.subplots(1,2)
sns.distplot(x,rug=True,ax=axes[0])
sns.distplot(x,ax=axes[1])

在这里插入图片描述

fit:控制拟合的参数分布图形,能够直观地评估它与观察数据的对应关系(黑色线条为确定的分布)

# from scipy.stats import *
sns.distplot(x,hist=False,fit=norm)

在这里插入图片描述

hist_kws,kde_kws,rug_kws,fit_kws参数接收字典类型,可以自行定义更多高级样式

sns.distplot(x,kde_kws={'label':'KDE'},color='r')

在这里插入图片描述

norm_hist:若为True,则直方图高度显示密度而非计数(含有KDE图形中默认为True)

fig,axes = plt.subplots(1,2)
sns.distplot(x,norm_hist=True,kde=False,ax=axes[0])
sns.distplot(x,kde=False,ax=axes[1])

在这里插入图片描述

### 如何在 `sns.kdeplot` 中添加或修改图例 当使用 Seaborn 的 `kdeplot` 函数来绘制多个数据集并希望展示图例时,可以通过传递标签参数给各个绘图调用来实现这一目标。下面是一个具体的例子,展示了如何为不同的数据分布添加图例[^1]。 ```python import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset("tips") # 创建一个新的图形环境 plt.figure(figsize=(8, 6)) # 使用 label 参数指定每条曲线对应的名称 sns.kdeplot(data=tips['total_bill'], shade=True, color="blue", label='Total Bill') sns.kdeplot(data=tips['tip'], shade=True, color="red", label='Tip') # 显示图例 plt.legend() # 设置图表标题和坐标轴标签 plt.title('KDE Plot with Legend Example') plt.xlabel('Value') plt.ylabel('Density') # 展示图像 plt.show() ``` 在这个实例中,通过向 `kdeplot()` 提供 `label` 参数指定了各条核密度估计线所代表的数据含义,并最终通过 `plt.legend()` 来呈现这些标签作为图例。这有助于观众理解不同线条对应的具体变量或类别。 对于进一步自定义图例样式的需求,比如改变字体大小、位置等,则可以借助 Matplotlib 更高级的功能来进行调整。例如: ```python # 自定义图例的位置和其他属性 plt.legend(loc='upper right', fontsize='small', title='Variable Names') ``` 上述代码片段允许更加灵活地控制图例的表现形式,从而更好地适应特定应用场景下的美观性和可读性的要求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值