Seaborn kdeplot():绘制核密度图(附带实例)
核密度图主要用于展示数据的分布情况,它与直方图的功能类似,但是它们的外观有两个显著区别:
在 Seaborn 中可以使用 kdeplot() 函数创建核密度图。分析下面的代码:

图 1 核密度图
分析下面的代码:

图 2 对数据分组的核密度图
如需将核密度图以面积的方式展示数据,可以为 kdeplot() 函数指定 multiple 参数,并将其值设置为 stack。
分析下面的代码:

图 3 以面积的方式展示数据
- 核密度图使用的是曲线,直方图使用的是柱形。
- 核密度图的 y 轴表示数据的密度,直方图的 y 轴表示数据的个数。
在 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 以面积的方式展示数据