首页 > 编程笔记 > Python笔记 阅读:23

Seaborn kdeplot():绘制核密度图(附带实例)

核密度图主要用于展示数据的分布情况,它与直方图的功能类似,但是它们的外观有两个显著区别:
在 Seaborn 中可以使用 kdeplot() 函数创建核密度图。分析下面的代码:
import matplotlib.pyplot as plt
import seaborn as sns
# 数据列表
x = [1, 3, 10, 12, 16, 25, 27, 31, 33, 36, 45, 52, 56]
# 绘制核密度估计图
sns.kdeplot(x=x)
# 显示图形
plt.show()
将创建如下图所示的核密度图:


图 1 核密度图

分析下面的代码:
import matplotlib.pyplot as plt
import seaborn as sns
# 数据定义
month  = range(1, 10)                       # 月份 1~9
counts = [20, 30, 70, 50, 90, 60, 40, 10, 80]  # 对应数量
grade  = list('ABCABBCCC')                  # 对应等级 A/B/C
# 构造标题与数据字典
title = ['月份', '数量', '等级']
data  = dict(zip(title, [month, counts, grade]))
# 按等级分色绘制核密度估计图
sns.kdeplot(x=counts, hue=grade)
# 显示图形
plt.show()
将创建下图所示的核密度图,其中为 kdeplot() 函数指定了 hue 参数,按照等级对数据进行分组。


图 2 对数据分组的核密度图

如需将核密度图以面积的方式展示数据,可以为 kdeplot() 函数指定 multiple 参数,并将其值设置为 stack。

分析下面的代码:
import matplotlib.pyplot as plt
import seaborn as sns
# 数据定义
month  = range(1, 10)                       # 月份 1~9
counts = [20, 30, 70, 50, 90, 60, 40, 10, 80]  # 对应数量
grade  = list('ABCABBCCC')                  # 对应等级 A/B/C
# 构造标题与数据字典
title = ['月份', '数量', '等级']
data  = dict(zip(title, [month, counts, grade]))
# 按等级分色绘制堆叠核密度估计图
sns.kdeplot(x=counts, hue=grade, multiple='stack')
# 显示图形
plt.show()
将创建如下图所示的核密度图:


图 3 以面积的方式展示数据

相关文章