You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为相对KDE图添加对应数据集标签?

解决seaborn.kdeplot多数据集标签显示异常的问题

你当前的写法里,sns.kdeplot接收列表形式的多个数据集时,label参数没法自动把列表里的标签对应到每个数据集,反而会把整个标签列表当成单一标签用,这就是标签显示不对的原因。下面给两种可行的解决方法:

方法一:分别调用kdeplot绘制每个数据集

直接为每个数据集单独调用一次kdeplot,并给每个调用指定对应的标签,这样能保证标签和数据集精准对应,还能灵活调整单个数据集的样式:

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

np.random.seed(0)
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 500)

plt.figure(figsize=(6, 6))

# 逐个绘制数据集并指定标签
sns.kdeplot(data1, label='Data 1', fill=True, bw_adjust=1)
sns.kdeplot(data2, label='Data 2', fill=True, bw_adjust=1)

plt.title('Relative density plots')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()

方法二:整理数据为DataFrame,用hue参数区分

这种方式更贴合seaborn的设计逻辑,把数据合并成带分组标识的DataFrame,通过hue参数自动区分不同数据集,标签会自动从分组列生成:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

np.random.seed(0)
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 500)

# 合并数据并添加分组列
df = pd.DataFrame({
    'Value': np.concatenate([data1, data2]),
    'Group': ['Data 1']*len(data1) + ['Data 2']*len(data2)
})

plt.figure(figsize=(6, 6))

# 用hue指定分组列,自动生成对应标签
sns.kdeplot(data=df, x='Value', hue='Group', fill=True, bw_adjust=1)

plt.title('Relative density plots')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()

内容的提问来源于stack exchange,提问作者sam wolfe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:31:10